0

嗨,我已经阅读了将近 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 上加载它时,它没有出现 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);
});
}
});

请问是我还是楼主?

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

4

2 回答 2

2

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

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

于 2013-10-02T06:23:02.590 回答
0

查看您提供的那个 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选择器错误/拼写错误
  • 确保您使用的是<select id='try1'>

亚伦
_

于 2013-10-02T06:28:24.660 回答