在许多示例代码中,我看到.getJSON()的格式类似于
$.getJSON("url?jsoncallback=?", function(data){
...}
在后端,响应写得像
$response = $_GET["jsoncallback"]."(".json_encode($orders).")";
echo $reponse
我删除了“?jsoncallback =?”来自url和$ _GET [“jsoncallback”]和后端的方括号,似乎一切仍然有效。那么jsoncallback的用途究竟是什么用呢?
答案 0 :(得分:2)
回调名称用于JSONP,这是规避same origin policy的方法。
答案 1 :(得分:2)
如果您没有jsoncallback=?
,它只会执行正常的JSON请求而不是JSONP * 。您可以在自己的服务器或发送CORS标头的服务器上正常执行JSON请求。
$_GET["jsoncallback"]
使其成为一个javascript函数调用:
fn({"data": "value"});
这是像<script src="http://foreign.org/data?jsoncallback=fn"></script>
这样的脚本中的代码。如您所见,这是Javascript,而不是JSON。有了这个,foreign.org(或者黑客攻击他们)可以更改他们的脚本以在页面上使用授权执行任何操作,因此在使用“JSONP”并且更喜欢CORS JSON时要小心。
答案 2 :(得分:1)
JSON回调可用于使用jQuery显示跨域数据。 JSONP用于进行跨域调用,因为相同的源策略不允许它。看看下面的例子。
http://www.9lessons.info/2009/12/display-cross-domain-data-json-callback.html