gpt4 book ai didi

即使响应是 json,jquery + jsonp也会返回语法错误

转载 作者:行者123 更新时间:2023-12-01 06:33:25 25 4
gpt4 key购买 nike

为什么会返回语法错误?

http://jsfiddle.net/syng17fv/

jquery.jsonp https://github.com/jaubourg/jquery-jsonp

回应 http://cvrapi.dk/api?search=test&country=dk

$.jsonp({
url : 'http://cvrapi.dk/api?search=test&country=dk',
success : function(json){
console.log('success')
},
error : function(){
console.log('err')
}
});

更新

这有效

$.ajax({
type : 'GET',
dataType : 'jsonp',
url : '//cvrapi.dk/api?search=test&country=dk',
success : function(res){

}
});

最佳答案

您需要添加回调参数。我将在下面详细解释原因。

如果没有回调,JSONP 调用将无法工作。数据加载在脚本标签中,如果代码不是方法调用的形式,结果只是一个被丢弃的对象,并且永远不会调用成功回调方法。

Why does [not using a callback] return a syntax error?

这是你的ajax响应在没有回调的情况下的样子(例如 http://cvrapi.dk/api?search=test&country=dk ):

<script> 
{"vat":11618405,"name":"TESTRUP ... (snip)
</script>

这个JavaScript当然有语法错误! :)

这是带有回调的 ajax 响应(例如 http://cvrapi.dk/api?search=test&country=dk&callback=callbackFunc ):

<script> 
callbackFunc({"vat":11618405,"name":"TESTR ... (snip)
</script>

现在这是有效的 JavaScript。在此示例中,$.jsonp 调用 callbackFunc(),一切正常。

<小时/>

JSONP(即“带填充的 JSON”)的核心元素如下:

  1. 您网站上定义的回调函数。
  2. 通过标签向远程 API 发出请求
    • 包含一个特殊参数,提供回调函数的名称
  3. 回应:
    • 只是 Javascript
    • 其中包括:
      1. 函数调用,其名称是您在请求中指定的
      2. 参数是感兴趣的 JSON 数据
    • 立即执行,就像从您自己的域调用一样

This callback arrangement between you and the server, combined with avoiding same-origin restrictions, is really the whole trick to JSONP

引用号:So how does JSONP really work? ,和Wikipedia: JSONP

<小时/>

像这样更改你的 json 代码。奇迹般有效。请注意添加的“callback”参数。 JSONP 期望如此。这是您编辑的 JSFiddle:http://jsfiddle.net/Drakes/syng17fv/2/

引用号:https://github.com/jaubourg/jquery-jsonp/blob/master/doc/TipsAndTricks.md

$.jsonp({
url : '//cvrapi.dk/api?search=test&country=dk&callback=?',
success : function(json){
console.log('success')
},
error : function(){
console.log('err')
}
});

关于即使响应是 json,jquery + jsonp也会返回语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29243362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com