2011-09-20 64 views
1

Possible Duplicate:
JSON crossdomain communication with PHP file and a local javascript file地空没有被访问控制允许来源

var xhr = new XMLHttpRequest(); 
xhr.open("GET","http://api.productwiki.com/connect/api.aspxop=search&q=iphone&format=json&ke y=123456789"); 
xhr.onreadystatechange = function(){ 
    if(xhr.readyState=== 4 && xhr.status==200){ 
     console.log(xhr.responseText); 
    } 
} 
xhr.send(); 

我想Ajax请求从以下网址获得的数据允许的。我去错误:

XMLHttpRequest cannot load http://api.productwiki.com/connect/api.aspx?op=search&q=iphone&format=xml&key=123456789. Origin null is not allowed by Access-Control-Allow-Origin. 

回答

0

您要求从一个不同的起源,你必须使用JSONP。 JSONP允许您将来自服务器的响应传递给JavaScript中的回调函数。最简单的方法是使用jQuery和使用的getJSON()或AJAX()方法,它会允许你做这样的事情:

$.getJSON('http://api.productwiki.com/connect/api.aspx?op=search&q=iphone&format=xml&key=123456789', 
     yourCallback); 
0

听起来像web服务不支持CORS这是需要绕过same origin policy

产品wiki webservice api支持JSONP,因此您可以使用它。

它要求您在查询字符串中设置format=json。它需要你设置一个回调。

//callback function 
function YourGlobalFunction(data){ 
    console.log(data); 

} 

//Fetch the content with JSONP 
var scr = document.createElement("script"); 
scr.src = "http://api.productwiki.com/connect/api.aspx?op=search&q=iphone&format=xml&key=123456789&format=json&callback=YourGlobalFunction"; 
document.body.appendChild(scr); 

如果你想要去的简单,并且可以使用库如jQuery,它会处理设置回调为您服务。

jQuery.getJSON(
    "http://api.productwiki.com/connect/api.aspx?op=search&q=iphone&format=xml&key=123456789&format=json", 
    {}, 
    function(data){ 
     console.log(data); 
    } 
); 
相关问题