来自URL的JSONP什么都不返回

时间:2013-10-02 06:09:10

标签: jquery html ajax json jsonp

你好我已经读了差不多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);
});
}
});

我想知道是我还是主持人?

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

2 个答案:

答案 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
亚伦