在javascript函数中使用JSON数据
我正在编写一个web服务,并将JSON数据作为响应返回 我想知道使用返回到Javascript函数(作为参数传递)的数据的最佳方式是什么 我是否:在javascript函数中使用JSON数据,javascript,Javascript,我正在编写一个web服务,并将JSON数据作为响应返回 我想知道使用返回到Javascript函数(作为参数传递)的数据的最佳方式是什么 我是否: 使用eval() 使用Doug Crawfords jSon解析器将jSon数据解析为Javascript对象 只需将返回的数据用作对象文本 顺便说一句,我还在学习Javascript(2天前刚刚开始阅读权威指南),所以如果我的问题看起来有点幼稚或愚蠢,请耐心听我说。如果您使用jQuery,可以设置它,使其作为JSON对象返回。 首先,在web服务方
顺便说一句,我还在学习Javascript(2天前刚刚开始阅读权威指南),所以如果我的问题看起来有点幼稚或愚蠢,请耐心听我说。如果您使用jQuery,可以设置它,使其作为JSON对象返回。
首先,在web服务方面,我想提出几点建议:
callback=functionName
参数,则返回正确序列化的JSON作为回调函数的唯一参数(在本例中为functionName
回调
参数,并确保设置了处理回调的函数
简单示例(使用PHP):
<?php
$callback = null;
if( isset($_REQUEST['callback']) ){
$callback = $_REQUEST['callback'];
}
$fakeData = array( 'key' => 'value');
$json = json_encode( $fakeData );
echo $callback ? "$callback($json)" : $json;
?>
function handleCallback( data ){
alert( data.key );
}
function get_json(){
// Dynamically create the script element
var script = document.createElement('script');
script.type = "text/javascript";
script.src = "http://yourwebservice.com/service/?callback=handleCallback";
document.getElementsByTagName('head')[0].appendChild( script );
}
调用
get_json
将动态创建请求(由于跨域限制,将其作为脚本元素。在大多数浏览器中,不能使用XMLHttpRequest进行跨域请求),PHP返回的脚本将在脚本返回时正确调用handleCallback
函数。假设您的Web服务使用ScriptService属性修饰:
我建议使用json2.js来处理json客户端。当本地实现可用时,它会遵从本地实现。(1)。使用eval()
只有你确定数据是干净的,我才不会相信任何来自外部的消息
(2).使用Doug Crawfords jSon解析器将jSon数据解析为Javascript对象
总的来说,这是最好的主意。即使jQuery也使用普通的旧eval()来解析JSON
(3)。只需将返回的数据用作对象文本即可
返回时,它只是一个字符串,而不是一个对象,除非通过上述两个函数中的一个传递,或者封装在函数ala中。@bdl“即使jQuery也使用普通的旧eval()解析JSON”在jQuery 1中是不正确的。4@Doug>感谢您的澄清。编辑:显然他们没有更改API文档,因为它仍然声称使用eval()。所有主要浏览器的最新版本都支持原生JSON,因此脚本应该在加载json2.js之前检查它。