jQuery JSONP回调未启动

jQuery JSONP回调未启动,jquery,Jquery,我正在使用jQuery发出跨域AJAX请求,但我的回调函数没有启动(请参阅) 根据文件: 从jQuery1.5开始,将jsonp选项设置为false可以防止jQuery 从将“?回调”字符串添加到URL或尝试使用 “=?”表示转换。在这种情况下,还应显式设置 jsonpCallback设置。例如,{jsonp:false,jsonpCallback: “callbackName”} 但是,如果我不指定回调,而只是在成功事件中处理数据,它就会工作(请参阅) 我是否误解了如何使用jQuery?< P

我正在使用jQuery发出跨域AJAX请求,但我的回调函数没有启动(请参阅)

根据文件:

从jQuery1.5开始,将jsonp选项设置为false可以防止jQuery 从将“?回调”字符串添加到URL或尝试使用 “=?”表示转换。在这种情况下,还应显式设置 jsonpCallback设置。例如,{jsonp:false,jsonpCallback: “callbackName”}

但是,如果我不指定回调,而只是在成功事件中处理数据,它就会工作(请参阅)


<>我是否误解了如何使用jQuery?

< P>来做JSONP请求,如您所摘录的文档中所指出的,如果服务器希望调用一个名为“代码>回调< /COD>”的参数,jQuery足够智能为您填充空白。Bitbucket确实使用此参数名称,因此您会得到如下URL:

https://api.bitbucket.org/.../?callback=jquery1234_5678
jquery1234_5678实际上是为回调自动生成的函数名。然后,Bitbucket返回如下内容:

jquery1234_5678({
    "node": "someId",
    "path": "filename",
    "data": "content"
})
https://api.bitbucket.org/.../?functionName=jquery1234_5678
因此函数被调用。此外,您还可以将()成功部分简化为:

success: jsonpCallback
如果Bitbucket需要一个不同的参数名,那么可以将其用作jsonp的值。例如,如果您通过了:

jsonp: "functionName"
该URL看起来像:

jquery1234_5678({
    "node": "someId",
    "path": "filename",
    "data": "content"
})
https://api.bitbucket.org/.../?functionName=jquery1234_5678
但答案是一样的


如果不想让jQuery生成函数名,您只需要
jsonpCallback

大多数人看JSONP是为了绕过cor。而且他们没有访问服务器的权限。如果他们这样做了,为什么不启用CORS头,而不去麻烦地实现JSONP回调呢?