我试图做一个POST AJAX 请求到一个服务器托管在我的笔记本电脑本地,但我似乎不能得到任何信息回来.当我点击我的网站上的一个按钮(localhost),我可以看到服务器传回正确的信息,但在前端我得到这个错误:
错误:网络错误:无法对“XMLHttpRequest”执行“发送”:未能加载“http://comp-ip”。
var param = JSON.stringify({varA:"varA",varB:"varB"});
$.ajax({
type: "POST",
url: "http://comp-ip",
async: false,
data: param,
success: function(result, status, xhr){
alert(result + ": " + status);
},
error: function(xhr, status, err) {
alert(status + ": " + err);
}
});
它似乎每次都会触发错误,而不是“成功”。有人知道出了什么问题吗?
编辑:我试过不使用 AJAX 发送一个正常的POST请求,但它也抛出了一个'undefined'错误:
$(document).ready(function(){
var param = JSON.stringify({varA:"varA",varB:"varB"});
$("#btn").click(function(event){
$.post(
"http://ip",
param,
function(data) {
$('#container').html(data);
}
).fail(function(error) { alert(error.responseJSON) });
});
});
我尝试过的其他方法:1)将浏览器更改为Safari(同样的事情,服务器返回信息,但网站得到一个错误)2)设置async = true from false.由于某种原因,当我设置为true时,服务器根本不响应.当它为false时,服务器响应.
5条答案
按热度按时间zed5wv101#
几分钟前我遇到了这个问题,问题是你需要把
async:false
设置为async:true
,我不知道为什么这样做,我猜是因为HTML5比XML更新。这个网站上的错误有点不同,但我认为它是相似的:JavaScript console.log causes error: "Synchronous XMLHttpRequest on the main thread is deprecated..."
更新
嗨,我带着一些新的和改进的信息回来了。跨源出现在端口和域/IP上,并且可能会出现在大多数像样的浏览器上。如果你想知道发生了什么,尝试将IP更改为localhost,反之亦然(如果您使用的是本地主机)。请记住,当您使用不同的端口时也会发生此问题。要快速修复,确保在来自后端服务器的头中,您输出了正确的Access-Control头
response.addHeader("Access-Control-Allow-Origin", "*");
。代码源自this question
qqrboqgw2#
这是一个跨源资源问题(CORS)。我的服务器向我返回了正确的信息,但我的浏览器拒绝接受它。为了解决这个问题,我必须在我的Java服务器(不是我的站点)上添加两行,将它们设置为响应头:
3zwtqj6y3#
我也遇到过同样的问题,错误信息也是一样的。在我的例子中,这是由于服务器将Feature-Policy标头设置为
sync-xhr: none
引起的。删除这个指令修复了这个问题。rsaldnfx4#
这是在一些浏览器更新后的几天开始发生的。看起来最新的浏览器现在拒绝非异步请求。
简短回答:不要设置
async: false
eoxn13cs5#
你可以像这样在Windows上用Chrome来测试你的网页