我正在向另一个域发出 jQuery $.getJSON
请求,因此请确保我的 GET URI 以“callback=?”结尾(即使用 JSONP)。
Firebug 的 NET 面板显示我正在按预期接收数据,但由于某种原因,控制台面板记录以下错误:“无效标签”。
JSON 通过 JSONLint 进行验证,所以我怀疑数据结构是否真的有问题。
知道为什么我可能会收到此错误吗?
最佳答案
这是一篇旧帖子,但我还是要发布回复:
假设您想要获取由以下文件“get_json_code.php”生成的 JSON 代码:
<?php
$arr = array ('a'=>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”文件中:
<?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].
?>
这样,生成的 JSON 代码将被添加到“jsoncallback”GET 变量中。
总之,“jsoncallback=?” $.getJSON() URL 中的参数执行两件事:1) 将函数设置为使用 JSONP 而不是 JSON,2) 指定用于保存从“get_json_code.php”文件检索的 JSON 代码的变量。您只需确保他们具有相同的名称。
希望有帮助,
Vq。
关于javascript - "invalid label"jQuery getJSON 的 Firebug 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2822609/