首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JQuery:读取服务器的JSON响应

JQuery:读取服务器的JSON响应
EN

Stack Overflow用户
提问于 2011-10-24 10:41:03
回答 2查看 511关注 0票数 0

好吧,我有一段代码,

代码语言:javascript
复制
var record = new Object(); //var aData = {};でもOK  
record["deviceID"] = "123456"; //aData["name"] = "hoge"でもoK  
$.getJSON("http://192.168.2.10:8080/commapi/comaction/init", {record: JSON.stringify(record)},
function(objRes){  
    alert(objRes["response"]); //objRes["country"]でもok  
}); 

我只是做了一个简单的servlet,它简单地回复了我所放的deviceID。但我的问题是有一个错误

代码语言:javascript
复制
XMLHttpRequest cannot load http://192.168.2.10:8080/commapi/comaction/init?record=%7B%22deviceID%22%3A%22123456%22%7D. Origin file:// is not allowed by Access-Control-Allow-Origin.

我怎么才能解决这个问题?谢谢!

更新后的脚本我尝试使用JSONP,我得到的脚本如下所示

代码语言:javascript
复制
$(document).ready(function() {
  $("#ui-2").click(function(){
      getJSON("http://192.168.2.143:8080/commapi/comaction/init?record=%7B%  22deviceID%22%3A%22123456%22%7D&callback=loaded"); 
  });
};


function getJSON(url){
var s = document.createElement('script');
  s.setAttribute('src',url);
  document.getElementsByTagName('head')[0].appendChild(s);

  // Loading ..
  $("results").innerHTML = '<p>Loading &hellip;</p>'; 
};


function loaded(data) { 

var res = data.query.results.item;
var html = "";
var i =  0;
var y = res.length;

for(i; i<y; i++) { 
    alert(data.deviceID);
} 

};

但这是新的错误资源,被解释为脚本,但使用MIME类型的application/json传输。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-24 10:53:57

我们不允许从Cross-site HTTP requests进行JavaScript操作。也就是说,您只允许向您自己的请求域发出AJAX请求。

只有在AJAX调用来自与http://192.168.2.10:8080/commapi/comaction/init相同的域时,才能成功地调用AJAX。

作为一种解决办法,这通常是由JSONP完成的,它将JavaScript callback function传递给位于页面上的JavaScript函数,并请求服务器用回调函数包装JSON数据的服务器。这是通过创建一个具有<script></script>属性的src标记作为AJAX url并附加到HTML来执行的。

PS:您的服务器必须有能力包装您的输出数据,这将需要更改您的http://192.168.2.10:8080/commapi/comaction/init代码。

票数 2
EN

Stack Overflow用户

发布于 2011-10-24 10:44:11

这是由于同一原产地政策,换句话说,主机和端口应该是相同的。

要解决这个问题,请看一下JSONP

这里有一个资源可以让你开始。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7874394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档