我有一个使用以下内容提交AJAX请求的页面:
function oc()
{
jQuery.get(
"http://somewhere.com:5001/ajax/options/",
jQuery('#selectform').serialize(),
function(data,statusm,xml){
// I got nothing!!!
return;
}
);
}
如果我从地址栏发出请求手册,那就行了。当我从JS发出请求时,我可以通过日志记录看到服务器端正常工作,但在回调中,我似乎无法获得回复的内容。
我出错了什么?
答案 0 :(得分:3)
您可能会看到的是same-origin policy。这是一个浏览器安全功能,可以防止跨站点脚本攻击,甚至可以访问不同端口上的相同域/主机 就政策而言,强大>被视为处于“不同领域”。 example table on Wikipedia可以很好地显示/不允许的内容。
您还可以使用Chrome中的--disable-web-security
命令行开关对此进行测试,然后您的脚本应该正常运行......这不是解决方案,只是帮助确认问题。
简而言之,您需要向同一个域或主机和端口发出请求,否则它将被阻止。此规则的例外是使用JSONP,它主要用于此目的。你可以找到一些不错的例子here和here。
答案 1 :(得分:1)
尝试使用$ .ajax的错误函数。
$.ajax({
url: "http://somewhere.com:5001/ajax/options/",
data: jQuery('#selectform').serialize(),
success: function(data,statusm,xml){
// I got nothing!!!
return;
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
// do something
}
});