当前位置: 首页 > 知识库问答 >
问题:

在XMLHttpask上执行发送失败

龙星渊
2023-03-14

我正试图向本地托管在笔记本电脑上的服务器发送一个POST ajax请求,但我似乎无法获得任何信息。当我在我的站点(localhost)上单击一个按钮时,我可以看到服务器传回正确的信息,但在前端我得到了以下错误:

错误:网络错误:未能在XMLHttpRequest上执行发送:未能加载超文本传输协议://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请求,它也给我一个“未定义”的错误:

$(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和false。由于某种原因,当我将其设置为true时,服务器根本没有响应。当它为false时,服务器会响应。

共有3个答案

经国安
2023-03-14

我也有同样的问题,有相同的错误信息。在我的例子中,这是由于服务器将功能策略头设置为sync xhr:none。删除此指令修复了该问题。

孙修贤
2023-03-14

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

yourownvariable.setHeader("Access-Control-Allow-Origin:", "origin url of your site");
yourownvariable.setHeader("Access-Control-Allow-Methods", "GET, POST,PUT");
颛孙飞鸾
2023-03-14

几分钟前我就有这个问题了。问题是您需要将async:false设置为async:true。我不确定这到底是为什么,我想是因为HTML5比XML更新。

这个网站上的错误有点不同,但我认为它是相似的: JavaScriptconsole.log会导致错误:"主线程上的同步XMLHttpRequest已被弃用..."

嗨,我带着一些新的和改进的信息回来了。跨源出现在端口和域/IP上,并且可能会出现在大多数体面的浏览器上。如果您想知道发生了什么,请尝试将IP更改为localhost,反之亦然(如果您使用的是localhost)。请记住,当您使用不同的端口时,也可能发生此问题。对于快速修复,请确保在来自任何后端服务器的头中,您正在输出正确的访问控制头response.addHeader(“访问控制允许源”、“*”)

代码就是从这个问题衍生出来的

 类似资料:
  • 问题内容: 我试图通过ajax jQuery的方法从跨域服务器检索XML,并且控制台上出现以下错误消息: 导致此错误的代码是: 问题答案: 问题是同步选项由以下方式指定: 这似乎在Chrome中不起作用,可能是由于jQuery的ajax方法的规范,该规范说: 跨域请求和dataType:“ jsonp”请求不支持同步操作。 奇怪的是,Firefox和Internet Explorer似乎忽略了该规

  • 我已经建立了一个AWS帐户,并正在尝试将我的第一个编程输入到S3中。我用控制台创建了一个桶,并把东西放在那里。我还创建了一个子目录(myFolder)并将其公开。我创建了我的。aws/credentials文件,并尝试使用示例代码,但出现以下错误: 在上执行“PutObject”时出错https://s3.amazonaws.com/gps-photo.org/mykey.txt“AWS HTTP

  • 无法执行目标org.apache.maven.plugins:maven-compiler-plugin:3.1:在项目gameoflife上编译(default-compile)-core:编译失败[错误]此环境中未提供编译器。也许您运行的是JRE而不是JDK? 我已经在我的机器上安装了Java,但仍然面临这个问题。 我在做EC2。

  • 现在反应堆的建造顺序是 另外module2依赖于module1和module3依赖于module2,现在为了解释依赖关系,我使用${project.version}指定module2 pom中的module1版本,类似地,我使用module3 pom中的${project.version}引用module2。现在快照作业成功执行,但是当我尝试使用聚合器pom(它是所有模块的父pom)释放所有模块时

  • 我已经通过libav-tools对安装了ffmpeg的应用程序进行了dockerize。该应用程序启动时没有问题,但是当Fluent-ffmpeg npm模块试图执行ffmpeg命令时出现了问题,但没有找到。当我想检查ffmpeg的版本和图像中设置的linux发行版时,我使用了命令,但它给出了以下错误: 然后我意识到,我尝试在图像或容器中运行的所有命令都会出现同样的错误。 这是我的Dockerfi