dan*_*aze 5 javascript php ruby code-design
给定后端基于 php 或 ruby 的 Web 应用程序,并在前端使用 javascript 进行编程,有时我们需要在两侧定义值来处理通过 API 进行前端-后端通信的数据。
在javascript中会是这样的:
var options = {
OPT_A : 1,
OPT_B : 2,
OPT_C : 3
};
switch(data.type)
{
case options.OPT_A:
/* */
break;
case options.OPT_B:
/* */
break;
case options.OPT_C:
/* */
break;
}
Run Code Online (Sandbox Code Playgroud)
在 php 中是这样的:
const OPT_A = 1;
const OPT_B = 2;
const OPT_C = 3;
Run Code Online (Sandbox Code Playgroud)
但问题是,你必须定义它们两次,每种语言一次。这可能会导致错误/不一致...
我想到的唯一方法是从服务器定义 javascript 部分,但我不喜欢 js 代码由 php/ruby 代码编写的想法。
所以我的问题是......有没有什么好的方法可以做到这一点?
您将需要阅读有关网络服务的内容。Web 服务本质上是一种功能。你向它传递一些参数,它就会返回一些信息。通常用于允许程序访问外部数据。您几乎可以通过任何 API 查看它们的运行情况。有关示例,请参阅stackexchange 的 api 。
最小的例子:
#sinatra routing
get '/webservice/test' do
content_type :json
data = {options: {
opt_a: 1,
opt_b: 2,
opt_c: 3
}}
JSON.pretty_generate(data)
end
Run Code Online (Sandbox Code Playgroud)
因此,当您访问 时your-site.com/webservice/test,您将得到:
{
"options": {
"opt_a": 1,
"opt_b": 2,
"opt_c": 3
}
}
Run Code Online (Sandbox Code Playgroud)
在 javascript 中使用这些数据变得很简单:
var call = new XMLHttpRequest();
call.onreadystatechange = function() {
if(call.readyState == XMLHttpRequest.DONE) {
if(call.status == 200) {
obj = JSON.parse(call.responseText);
console.log(obj);
} else if(xmlhttp.status == 400) {
console.log("error 400");
} else {
alert("some other thing happened");
}
}
}
call.open("GET", "/webservice/test", true);
call.send();
Run Code Online (Sandbox Code Playgroud)
现在您的数据已经在客户端了!具体来说,objwill 是Object {options: Object},因此您可以使用 3 个选项来obj.options.opt_a获取1。
这里有一些关于网络服务的很好的简单英语解释。
如果您不熟悉 http 响应代码,可以在此处查看完整列表。这就是call.statusjavascript 代码的部分。
如果您愿意,您可以使用 jQuery 在 jQuery 中执行相同的 ajax 调用$.getJSON("/webservice/test", function() ...)。你可以在这里读更多关于它的内容
| 归档时间: |
|
| 查看次数: |
2918 次 |
| 最近记录: |