使用jQuery getJSON的“无效标签”Firebug错误

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

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

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

任何想法,为什么我可能会收到此错误?

这是一篇旧post,但我还是发布了一条回复:

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

 1,'b'=>2,'c'=>3,'d'=>4,'e'=>5); echo json_encode($arr); ?> 

就像你提到的那样,当你添加一个“jsoncallback =?”时,$ .getJSON()会使用JSONP。 所需URL字符串的参数。 例如:

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

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

 1,'b'=>2,'c'=>3,'d'=>4,'e'=>5); echo $_GET['jsoncallback'].'('.json_encode($arr).')'; //assign resulting code to $_GET['jsoncallback]. ?> 

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

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

希望有所帮助,

VQ。

看起来你在服务器脚本中滥用JSONP。

当您收到带有回调参数的请求时,您应该呈现以下内容:

 callbackName({ "myName": "myValue"}); 

其中callbackName是回调参数的值。