我无法使用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
来解决域控制问题。
我犯了一些明显的错误吗?
答案 0 :(得分:5)
我相信你应该取消引用该函数并通过引用传递它:
$.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
键的值注入其随机生成的回调函数名称。所以,一切都会自动“透明地”连接起来。
答案 1 :(得分:0)
尝试正确调用您的函数:
processJSONDirectoryFile()