Jquery 返回空字符串的Ajax POST
我一直试图通过ajax从另一个站点访问数据,但失败了。 这种情况是,如果我通过表单将数据发布到站点,那么我将被重定向到该站点并显示正确的数据。 我想做的是我希望我的脚本使用ajax获取数据。 我想澄清的一点是,我不能修改服务器端的脚本,以便添加Jquery 返回空字符串的Ajax POST,jquery,ajax,Jquery,Ajax,我一直试图通过ajax从另一个站点访问数据,但失败了。 这种情况是,如果我通过表单将数据发布到站点,那么我将被重定向到该站点并显示正确的数据。 我想做的是我希望我的脚本使用ajax获取数据。 我想澄清的一点是,我不能修改服务器端的脚本,以便添加访问控制允许源代码标题 他们有什么诡计或手段让我得到数据吗 $(document).ready(function(){ $.ajax({ type: 'POST',
访问控制允许源代码标题
他们有什么诡计或手段让我得到数据吗
$(document).ready(function(){
$.ajax({
type: 'POST',
url: 'http://somedomain.com/FlightStatus.aspx',
data: {ArrFltStatus:'KDU',DepFltStatus:'ISB',DropDownDay:'today',Submit:'Proceed'},
success: function(data){
alert(data);
},
error:function(xhr,err){
alert("readyState: "+xhr.readyState+"\nstatus: "+xhr.status);
alert("responseText: "+xhr.responseText);
}
});
});
在请求跨域资源时,您应该在ajax选项中使用数据类型:“jsonp”属性。如果他们有一个jsonp接口,请使用它(这对POST不起作用)
否则,您需要在服务器上使用代理脚本来执行远程访问,以便您的JavaScript可以访问同一域上的资源。在使用脚本检索本地macine上的数据时,我也遇到了同样的问题,但是当我把我的调用脚本上传到我请求数据的服务器上时,我就可以正常工作了
这是因为域安全性不允许我从宿主服务器检索数据。跨域请求只能使用JSONP完成,JSONP只支持GET和$。ajax默认为GET,因此根本不需要设置类型:
$.ajax({
url: 'http://somedomain.com/FlightStatus.aspx',
data: {ArrFltStatus:'KDU',DepFltStatus:'ISB',DropDownDay:'today',Submit:'Proceed'},
dataType : 'jsonp',
}).done(function(data) {
alert(data);
});
错误处理程序不是用JSONP激发的,所以也不需要使用它
如果您请求数据的服务不支持JSONP,您可以使用Yahoo的YQL设置一个管道,让您以JSONP格式获取数据。由于安全预防措施,跨源请求被阻止与它接受的内容无关,它被浏览器作为安全措施阻止。只允许使用JSONP,并且JSONP只支持GET请求。好的,那么远程服务器与您尝试使用ajax重设数据的服务器相同吗?