[英]Some errors when I tried to get JSON data from a server
我正在使用jQuery的getJSON方法和Extjs中的方法从服务器获取一些JSON数据。
Javascript代码放在服务器A的apache2上,而Web服务放在服务器A的tomcat7上。但是当我使用主机B访问javascript时,javascript代码中的a方法调用了Web服务。 是从主机B向服务器A发出请求,对不对?
但是我得到一个错误:
XMLHttpRequest cannot load http://192.168.5.107:8080/restful/product/all/?callback=?&_dc=1384439969320&page=1&start=0&limit=25. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://192.168.5.107' is therefore not allowed access.
而且我必须添加
?callback=?
到我的网址。
但是我的jQuery代码又出现了另一个错误“ Uncaught SyntaxError:Unexpected token:”。 我用谷歌搜索,大多数人的建议是删除回调。 但是我必须使用它,否则无法获取JSON数据。
这是我使用jQuery的代码:
$.getJSON('http://192.168.5.115:8080/restful/standard/id/' + id, function(data) {
console.log('old data:\n');
console.log(data); // use data as a generic object
oldObj = data;
var newObj = Object.keys(oldObj).map(function(k) {
return { key: k, value: oldObj[k] };
});
console.log('new data:\n');
console.log(newObj); // use data as a generic object
});
甚至我添加了回调参数。 Extjs中的代码仍然会出现第一个错误。
这是我的Extjs代码:
// create the data store
var store = Ext.create('Ext.data.Store', {
model: 'Product',
proxy: {
type: 'ajax',
url : 'http://192.168.5.115:8080/restful/product/all/?callback',
reader: {
type: 'json'
}
}
});
我试图修复他三天,却一无所获。 我真的希望有人能帮助我解决问题。
如果要“尝试回调”,则必须使用类型为“ jsonp”而不是“ ajax”的代理。
回调参数将由代理自动添加,但是您的服务器将必须对其进行处理 ,即使用客户端要求的实际回调名称。
这个其他问题将为您提供有关客户端和服务器的完整示例(答案中)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.