2011-11-24 42 views
2

我开发一个网站,从外部URL使用JSON,我试过,但我得到了一个错误使用JSON使用jQuery

XMLHttpRequest cannot load http://reuniyo.com/tst/json.php. Origin null is not allowed by Access-Control-Allow-Origin

下面是我使用的代码。

var url="http://reuniyo.com/tst/json.php"; 
jQuery.support.cors = true; 
$("#success").load(url, function(response, status, xhr) { 
    if (status == "error") { 
    var msg = "Sorry but there was an error: "; 
    $("#error").html(msg + xhr.status + " " + xhr.statusText); 
    } 
}); 

请帮帮我。提前

+1

看到这个链接 - > http://en.wikipedia.org/wiki/Same_origin_policy这将解释你的问题 – ManseUK

+0

**谢谢先生** –

回答

6

假设远程URL不在同一个域中,你正在开发的网站谢谢,uou需要:

  1. 使用JSONP如果远程API支持它(我的测试表明事实并非如此)

  2. 在远程站点添加Access-Control-Allow-Origin: *他们的响应头

如果没有的这些都是可能的,你运气不好 - 这些规则在那里,以防止跨源脚本攻击。

+1

我使用'jQuery.support.cors = true; '在JavaScript中,但其工作只在IE8 :( –

0

添加此行ATT的json.php

header('Access-Control-Allow-Origin: *'); 
+1

我让它''jQuery.support.cors = true;''$ .getJSON(“http://reuniyo.com/tst/json.php”,function( DATAS){'' $。每个(datas.Data,功能(I,数据){'' 含量= '

' + Data.CurrentDistance + '

';' '$(内容).appendTo(” #product_list“);' '});});' 但它唯一的工作在IE8中,是否有其他的解决方案? –

0

顶部不要试图开发从本地文件系统直接,它创造各种权限问题。将您的开发网站移至http服务器(如果您愿意,可以在本地安装一个)。

您还需要确保您访问网站的主机名具有来自reuniyo.com的权限(使用上述Access-Control-Allow-Origin HTTP标头)向其发出Ajax请求。

+0

I _think_ h e建议远程API是第三方站点,不同于托管HTTP内容的站点。 – Alnitak

+0

**谢谢先生** –