使用jQuery getJSON"无效标签"Firebug错误

jer*_*ome 2 javascript validation jquery firebug jsonp

我正在$.getJSON向另一个域发出jQuery 请求,所以我确保我的GET URI以"callback =?"结尾 (即使用JSONP).

Firebug的NET面板显示我正在按预期接收数据,但由于某种原因,控制台面板记录以下错误:"无效标签".

JSON使用JSONLint进行验证,因此我怀疑数据结构是否存在任何真正的错误.

我可能会收到此错误的任何想法?

小智 11

这是一个老帖子,但我还是发布了一个回复:

假设您要获取由以下文件"get_json_code.php"生成的jSON代码:

<?php
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
echo json_encode($arr);
?>
Run Code Online (Sandbox Code Playgroud)

就像你提到的那样,$ .getJSON()在添加"jsoncallback =?"时使用JSONP.所需URL字符串的参数.例如:

$.getJSON("http://mysite.com/get_json_code.php?jsoncallback=?", function(data){ 
   alert(data);
});
Run Code Online (Sandbox Code Playgroud)

但是,在这种情况下,您将在Firebug中收到"无效标签"消息,因为"get_json_code.php"文件未提供有效的引用变量来保存返回的jSON字符串.要解决此问题,您需要将以下代码添加到"get_json_code.php"文件中:

<?php
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
echo $_GET['jsoncallback'].'('.json_encode($arr).')'; //assign resulting code to $_GET['jsoncallback].
?> 
Run Code Online (Sandbox Code Playgroud)

这样,生成的JSON代码将添加到'jsoncallback'GET变量中.

总之,"jsoncallback =?" $ .getJSON()URL中的参数做了两件事:1)它将函数设置为使用JSONP而不是JSON,2)指定将保存从"get_json_code.php"文件中检索的JSON代码的变量.您只需确保他们拥有相同的名称.

希望有所帮助,

VQ.