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