【问题标题】:JSONP from URL returns nothing来自 URL 的 JSONP 不返回任何内容
【发布时间】:2013-10-08 11:34:04
【问题描述】:

您好,我已经阅读了将近 1 周的关于 json 的文章。

$.getJSON( 'accounts.json', function(data ) {
$('#try1').append("<option value='0' name='idsel'>Select Outlet</option>");
console.log(data);
$.each(data, function (i, item) {
$('#try1').append("<option value='" + item.outlet_group_id + "'>" + item.outlet_group_name + " : " + item.outlet_group_code + "</option>");
});
});

我有这个脚本可以正常工作,但是当我在 url 上加载它时它没有出现 网址是这个http://nutri.de.imerchmedia.com/services/accounts

我也试过jsonp,我想出了这个

$.ajax({
url: 'http://nutri.de.imerchmedia.com/services/accounts',
dataType: 'jsonp',
success: function(data1){
$.each(data, function (k,v) {
console.log(data1);
$('#form').append(k + ':' + v);
});
}
});

不知道是我还是楼主?

任何帮助将不胜感激。 也可以随意尝试通过链接提取数据。

【问题讨论】:

  • 您是否遇到任何错误?有数据吗?你用萤火虫检查过吗?这是同源策略限制吗? en.wikipedia.org/wiki/Same_origin_policy
  • URL返回JSON,不是JSONP,所以不能使用JSONP。由于是外部域,所以不能使用Ajax,除非服务器支持CORS。
  • 它的 htmlrequest 和 sameoriginpolicy 限制,但我想我已经尝试了所有方法,但仍然无法正常工作
  • @FelixKling 如果它的 json 它应该适用于我的第一个脚本,对吗?因为我的第一个脚本读取了一个保存的 json 文件,该文件正是链接的内容
  • 不,这不是因为您正在访问外部域。除非启用了 CORS,否则您无法通过 Ajax 从外部域加载 任何 数据。 JSONP 实际上不是 Ajax,它通过动态添加 &lt;script&gt; 元素来工作。

标签: jquery html ajax json jsonp


【解决方案1】:

查看您提供的那个 URL,JSONP 没有 callback 包装器可以工作。 JSONP 要求将常规 JSON 数据结构的输出“包装”在页面上的函数中。通常 jQuery 会为您执行此操作,因此您可以使用以下命令调用您的服务:

http://nutri.de.imerchmedia.com/services/accounts?callback=foobar

您应该在页面上有一个function foobar (data) {...}。同样,jQuery 会为您创建此函数,但您的服务需要像这样包装响应数据:

foobar('jsontoreturnhere...')

然而

鉴于该数据和您的示例代码,我有一份副本在这里工作:http://jsfiddle.net/aaronfay/jCqwp/

我不能在 jsfiddle 上进行 Ajax 调用,所以我只是在模拟你的函数的内部部分。我怀疑这是在做你想做的事,所以我认为可能是:

  • 您的 #try1 选择器错误/拼写错误
  • 确保您使用的是&lt;select id='try1'&gt;

gl
亚伦

【讨论】:

    【解决方案2】:

    这很可能是跨域问题。未经他们的许可,您不能将 json 从另一个域加载到您的网站中。他们的服务器必须在它发送给您的文件中添加一个 Cross-Origin-Allow 标头,告诉浏览器它没问题。看起来http://nutri.de.imerchmedia.com/services/accounts 没有发送该标头。所以你将无法使用它。

    Jsonp 是人们用来绕过 json 跨源限制的一种格式。服务器将发送 jsonp 还是仅发送 json 取决于服务器配置,并且看起来 imerchmedia 没有采取步骤来启用服务 jsonp。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-14
      • 2018-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-23
      • 2020-04-27
      • 2019-04-06
      相关资源
      最近更新 更多