【问题标题】:JSONP not receiving any callback?JSONP 没有收到任何回调?
【发布时间】:2026-01-23 13:00:02
【问题描述】:

尝试向 yellowapi(黄页)发出 JSONP 请求,即使指定回调也会给我“无效标签”错误。这是我目前所拥有的:

$.ajax({
dataType: 'jsonp',
 cache : false,
 url: "http://api.sandbox.yellowapi.com/FindBusiness/",
 data : "apikey="+testingPurposes+"&what="+what+"&where="+where+"
    &fmt=JSON&pgLen=1&UID=127.0.0.1&callback=?",
 success: function (data) {
   alert(data)
 }
});

它以 JSON 格式返回正确的结果,但它在开始时没有“json12345678”回调。给我一个“无效标签”错误。

我有什么办法来解决这个问题?

附:所有的变量都定义好了,apikey后面会去掉。

【问题讨论】:

  • 返回的响应是什么样的?如果没有 API 密钥,就很难测试这个。
  • 它看起来像普通的 JSON

标签: javascript jquery json label


【解决方案1】:

如果它在开始时没有回调,那将是您正在使用的 API 的问题,而不是您的代码的问题。你确认它支持 JSONP 了吗?

【讨论】:

  • 我想到了,但不知道是否有办法解决它。我还没有确认他们是回调,但在这一点上我假设不是。
【解决方案2】:

文档说支持的格式是 json 和 XML,而不是 jsonp。由于浏览器内置的跨站点脚本限制,您可能无法使用这些数据。 (当我不得不做这种事情之前,我通常会在我自己的服务器上生成一个从 PHP 向 Yellowapi.com 发出请求的代理服务,因为 PHP 没有那些跨站点限制)

【讨论】:

  • 从您自己的服务器发出请求的另一个优点是您不需要公开 apikey - 否则您页面的任何用户都可以看到 apikey - 不好。
  • 我希望删掉 PHP,但最坏的情况是我不得不走那条路。
  • 我同意,这只是为了测试目的,我永远不会把 apikey 留在那里