jsonp回调错误

2024-01-10

我正在使用 Firefox 插件生成器。运行此代码时出现“回调未定义”错误

function callback(data) {
   window.alert(data.status);
}

$.ajax({
   url: "http://apps.compete.com/sites/google.com/trended/rank/?apikey=210e634a0b3af972daa908a447c735c1&start_date=201112&end_date=201112&jsonp=?",
   dataType: "jsonp",
   jsonp: "jsonp",
   jsonpCallback: "callback"
});

这是api文档:https://www.compete.com/developer/documentation/ https://www.compete.com/developer/documentation/


我假设您是从内容脚本运行它。您必须考虑到内容脚本并不真正在与网页脚本相同的上下文中运行 - 网页无法看到内容脚本定义的函数,反之亦然(该机制的详细描述 https://developer.mozilla.org/en/XPCNativeWrapper)。 JSONP 的工作原理是插入一个<script>标记到网页中。该脚本将在网页的上下文中运行 - 并且它不会看到您在内容脚本中定义的回调函数。

定义callback在窗口上下文中执行以下操作:

unsafeWindow.callback = function(data)
{
  window.alert(data.status);
};

但是,您应该采取关于警告unsafeWindow在文档中 https://addons.mozilla.org/en-US/developers/docs/sdk/1.4/dev-guide/addon-development/content-scripts/access.html认真对待并尽可能避免。使用request package https://addons.mozilla.org/en-US/developers/docs/sdk/1.4/packages/addon-kit/docs/request.html在您的扩展中加载数据:

require("request").Request({
  url: "http://apps.compete.com/sites/google.com/trended/rank/?apikey=210e634a0b3af972daa908a447c735c1&start_date=201112&end_date=201112",
  onComplete: function(response)
  {
    console.log(response.json);
  }
});

然后您可以发送response.json通过以下方式添加到您的内容脚本平常的消息传递 https://addons.mozilla.org/en-US/developers/docs/sdk/1.4/dev-guide/addon-development/content-scripts/using-postmessage.html.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jsonp回调错误 的相关文章

随机推荐