jquery 网络错误:未能对“XMLHttpRequest”执行“发送"

sbdsn5lh  于 2023-03-17  发布在  jQuery
关注(0)|答案(5)|浏览(249)

我试图做一个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时,服务器响应.

zed5wv10

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

qqrboqgw

qqrboqgw2#

这是一个跨源资源问题(CORS)。我的服务器向我返回了正确的信息,但我的浏览器拒绝接受它。为了解决这个问题,我必须在我的Java服务器(不是我的站点)上添加两行,将它们设置为响应头

yourownvariable.setHeader("Access-Control-Allow-Origin:", "origin url of your site");
yourownvariable.setHeader("Access-Control-Allow-Methods", "GET, POST,PUT");
3zwtqj6y

3zwtqj6y3#

我也遇到过同样的问题,错误信息也是一样的。在我的例子中,这是由于服务器将Feature-Policy标头设置为sync-xhr: none引起的。删除这个指令修复了这个问题。

rsaldnfx

rsaldnfx4#

这是在一些浏览器更新后的几天开始发生的。看起来最新的浏览器现在拒绝非异步请求。
简短回答:不要设置async: false

eoxn13cs

eoxn13cs5#

你可以像这样在Windows上用Chrome来测试你的网页

chrome.exe --allow-file-access-from-files

相关问题