我试图通过使用以下代码从json url获取响应:
$(document).ready(function(){
//attach a jQuery live event to the button
$('#getdata-button').live('click', function(){
alert("get data");
$.getJSON('http://vamdemo2.e-isg.com/vamsyncservices/api/site/GetAllSites?username=Admin&password=password', function(data) {
alert(" data alert"+data); //uncomment this for debug
});
});
});
我没有从上面的网址得到任何回复。如果我将网址从http://vamdemo2.e-isg.com/vamsyncservices/api/site/GetAllSites?username=Admin&password=password更改为https://www.googleapis.com/freebase/v1/text/en/bob_dylan,则会收到回复。如果我在浏览器中打开两个url,两者都有数据..但是,当我尝试使用javascript从url获取响应时,一个url仅给出响应。问题出在哪儿??为什么另一个网址没有给出任何回应?
请给我任何解决方案...... 提前谢谢......
答案 0 :(得分:1)
我已将您的代码放入浏览器中,对我而言,这两个网址都无效。
即使是googleapis.com网址,当我在Chrome中加载代码并按F12时,我会收到此错误:
XMLHttpRequest cannot load https://www.googleapis.com/freebase/v1/text/en/bob_dylan. Origin null is not allowed by Access-Control-Allow-Origin.
这是因为通常不允许JavaScript在domain1上运行并从domain2加载URL。这是设计上的安全措施。
如果
- 您很乐意将您的客户端代码更改为AND
- 你可以让你的vamdemo2.e-isg.com服务器在添加“回调”查询字符串参数时改变响应
然后
- 有一个解决方案:JSONP
在此处阅读有关如何实现此目的的更多详细信息: