jquery:获取jsonp的ajax调用不调用函数

jquery:获取jsonp的ajax调用不调用函数,jquery,jsonp,Jquery,Jsonp,我很难使用jquery库中的ajax调用让代码在回调中运行。代码如下所示: function processJSONDirectoryFile(jsonData) { finished = false; for (var i = 0; i < jsonData.length; i++) { processJSONCountryFile(jsonData[i]); } finished = tru

我很难使用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
}
函数处理jsondirectoryfile(jsonData){
完成=错误;
对于(var i=0;i
我已检查是否可以加载
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将为querystring中的
callback
键的值注入其随机生成的回调函数名。因此,一切都会自动透明地“连接起来”。

尝试正确调用您的函数:

processJSONDirectoryFile()


恐怕这两个调用都无法调用我的函数。我尝试了一些变化,但没有运气。还有其他的想法,或者关于如何调试的想法吗?当你在Firebug中观看时,你是否看到请求在“net”选项卡中发出并成功返回?