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

标签 jquery jsonp

我无法使用 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/

相关文章:

php - 刷新时输入值不会更改为其默认值

javascript - 在 JavaScript 中迭代 MooTools JSONP 输出

jquery - ajaxSend 事件不会针对数据类型为 jsonp 的 ajax 请求触发。怎样才能让它火呢?

javascript - 使用循环打印 json 对象属性

java - 如何在 RESTEasy 中启用 JSONP?

jquery - 自定义 CSS 以允许 chrome textarea 调整大小小于初始状态?

javascript - 文本左对齐问题

javascript - 如何将这个常用的 javascript 代码变成一个插件?

javascript - 为什么我的 ajax 调用返回 null

jquery - WCF JSONP jQuery 未传递正确的状态