这是一个旧帖子,但我还是发布了回复:
假设您要获取以下文件“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.