在许多示例代码中,我看到 .getJSON() 的格式类似于
$.getJSON("url?jsoncallback=?", function(data){
...}
在后端,响应写成
$response = $_GET["jsoncallback"]."(".json_encode($orders).")";
echo $reponse
我删除“?jsoncallback=?”来自 url 和 $_GET["jsoncallback"] 以及后端的方括号,似乎一切仍然有效。那么 jsoncallback 的东西到底有什么用呢?
最佳答案
如果您没有 jsoncallback=?
,它只会执行普通的 JSON 请求,而不是 JSONP*。您可以在自己的服务器或发送 CORS header 的服务器上执行正常的 JSON 请求。
* 忘记 JSONP,这是一个花哨的名称,用于在您的文档中插入一个脚本元素,该元素运行来自外部服务器的代码,但与您自己的脚本具有相同的授权。 $_GET["jsoncallback"]
,使它成为一个 javascript 函数调用,如下所示:
fn({"data": "value"});
这是类似
<script src="http://foreign.org/data?jsoncallback=fn"></script>
的脚本中的代码。如您所见,这是 Javascript,而不是 JSON。有了这个,foreign.org(或黑客攻击他们的人)可以更改他们的脚本以在您的页面上通过授权执行任何操作,因此在使用“JSONP”时要小心并更喜欢 CORS JSON。关于php - .getJSON() 中 jsoncallback 参数的用途是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14313365/