我无法使用 jquery 库中的 ajax 调用让我的代码在回调中运行。代码如下:
function processJSONDirectoryFile(jsonData) {
finished = false;
for (var i = 0; i < jsonData.length; i++) {
processJSONCountryFile(jsonData[i]);
}
finished = true;
}
function getJSON() {
//snip
$.ajax({url: 'http://example.org/api/rest/something',
data: {},
dataType: 'jsonp',
timeout: 10000,
jsonp: "callback",
jsonpCallback: "processJSONDirectoryFile",
});
//snip
}
我已经检查过我可以加载http://example.org/api/rest/something?callback=myfunc
并且它按预期工作。我正在使用 firebug 在此代码中设置断点。 ajax
调用断点被击中,但 processJSONDirectoryFile
内的断点从未被击中。
我还应该提到我正在使用 jsonp
因为我的代码在与 example.org
不同的域上运行,所以我需要使用 jsonp
绕过域控制的东西。
我犯了一些明显的错误吗?
最佳答案
我认为您应该取消引用该函数并通过引用传递它:
$.ajax({ url: 'http://example.org/api/rest/something',
// This empty data parameter probably isn't necessary.
data: {},
dataType: 'jsonp',
timeout: 10000,
jsonp: "callback",
jsonpCallback: processJSONDirectoryFile,
});
此外,如果您更喜欢更一致的 $.ajax()
语法,这应该是等效的:
$.ajax({
url: 'http://example.org/api/rest/something?callback=?',
dataType: 'jsonp',
timeout: 10000,
success: processJSONDirectoryFile
});
按照惯例,jQuery 将为查询字符串中的 callback
键的值注入(inject)随机生成的回调函数名称。因此,一切都会自动透明地“连接”。
关于jquery:ajax调用获取jsonp不调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4922261/