jQuery JSONP没有调用回调

use*_*328 8 javascript jquery jsonp

我在使用jsonp和jquery时遇到了一些问题.

这是我的代码 -

var myCallback = function(data) {
  console.log(data);
};

$.ajax({
  url: my_url,
  type: 'GET',
  dataType: 'jsonp',
  jsonp: 'callback',
  jsonpCallback: 'myCallback'
});
Run Code Online (Sandbox Code Playgroud)

jQuery添加类似于?callback=myCallback&_=1340513330866my_url的东西,而my_url返回的数据是myCallback('abcd')- 虽然实际上它将返回一些HTML代码而不是abcd.

问题:abcd未通过控制台登录myCallback.那我做错了什么?我的印象是返回的数据将在脚本标签内执行?

Fel*_*ing 16

如果您使用自己的函数,则必须将其明确声明为全局函数.例如:

window.myCallback = function(data) {
  console.log(data);
};
Run Code Online (Sandbox Code Playgroud)

DEMO


说明

响应成功的JSONP请求而应调用的每个函数都必须是全局的.jQuery也是这样做的.这是因为JSONP只不过是包含一个(动态生成的(大部分时间))带有<script>标记的JavaScript文件,它只包含一个函数调用.由于每个脚本都在全局范围内进行评估,因此调用的函数也必须是全局的.