【问题标题】:Async request with status = 0状态为 0 的异步请求
【发布时间】:2016-02-04 06:14:53
【问题描述】:

我对异步请求有一些问题。我的网站和 api 在不同的端口上,Access-Control-Allow-Origin 标头在 API 端正确设置(因为同步请求工作正常)。

以下代码始终返回“ERR”。我

function load() {
    var xhr = new XMLHttpRequest();
    xhr.open('GET', 'http://domain:8801/api/', true);
    xhr.onreadystatechange = function() {
    if (xhr.readyState == 4) {
        if (xhr.status != 200) {
            alert( "ERR" + " Status: " + xhr.statusText + " Response: "+xhr.responseText ); //always ERR in browser
        }
        else {
            alert( "SUCCESS" );
        }
    }
    };
    xhr.send();
}

【问题讨论】:

  • 所以...您的服务总是返回错误?我不知道您希望我们能够使用此代码提供什么帮助。这是一个后端问题
  • 那么xhr.statuscontain 到底是什么? developer.mozilla.org/en-US/docs/Web/HTTP/Response_codes
  • 不要转储出已修复的错误消息。那完全没用。 alert(xhr.statusText) 会告诉你问题出在哪里。或者至少吐出xhr.status本身,这样你至少可以看到http代码。
  • 状态 0 通常表示网络或安全错误。控制台应该会给你一个更完整的错误信息。
  • @Codeman 但同步请求一切正常,所以它不是后端问题

标签: javascript xmlhttprequest


【解决方案1】:

为返回的异步设置监听器

function reqListener() {
  console.log(this.responseText);
}

function load() {
  var xhr = new XMLHttpRequest();
  xhr.addEventListener("load", reqListener);
  xhr.open('GET', 'http://domain:8801/api/');
  xhr.send();
}

默认情况下不输入 true/false 使其异步

所以这都是错误的,“提交”按钮是问题所在 - 异步操作不同 - 同步等待响应,然后提交,而异步没有,并且在提交操作之前它永远不会返回

【讨论】:

  • 第一次按下按钮后,什么也没有出现。秒后我看到后端响应(实际上是我期望看到的)
  • 可能与“按钮按下”有关 - 显示代码...
  • 尽可能简单
  • 不是那么简单 = 将类型更改为不提交,否则默认情况下它会尝试可能会尝试 <button type="button" onclick="load()">click</buttonn> 我会在代码中添加一个事件侦听器而不是嵌入它
  • 好的,按钮类型工作正常,谢谢!但是我应该如何处理表单并提交它们?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-11
  • 1970-01-01
  • 2018-05-05
  • 2020-12-20
  • 2018-11-11
  • 2019-05-05
相关资源
最近更新 更多