你好我已经读了差不多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>");
});
});
我有这个脚本工作正常,但当我加载它的网址它不会出现 网址是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);
});
}
});
我想知道是我还是主持人?
任何帮助将不胜感激。 也可以尝试通过链接提取数据。
答案 0 :(得分:2)
这很可能是跨源问题。未经他们的许可,您无法从其他域名将json加载到您的网站中。他们的服务器必须在它发送给你的文件中添加一个Cross-Origin-Allow标头,告诉浏览器它没问题。看起来http://nutri.de.imerchmedia.com/services/accounts不会发送该标头。所以你无法使用它。
Jsonp是一种人们用来绕过json交叉起源限制的格式。服务器是发送jsonp还是仅发送json取决于服务器配置,并且看起来imerchmedia没有采取措施来启用服务jsonp。
答案 1 :(得分: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'>
GL
亚伦