【问题标题】:XMLHttprequest Error message even in case of successXMLHttprequest 错误消息即使在成功的情况下
【发布时间】:2017-11-16 15:57:12
【问题描述】:

这个“工作”脚本将 JSON 发送到外部 API。它不能正确地在控制台中记录成功或错误。 即使它有效,它仍然向我显示“错误”三遍。 问题:

一个。在成功的情况下导致错误消息的代码错误在哪里?

编辑:这部分 (a) 已由 Suren Srapyan 回答,我将 abc.status 搞砸了,下面的代码已更新

b. de XMLHttpRequest() 是否总是运行三次,因此会记录三次消息,还是由其他原因引起的?

编辑:这很可能是由代码的其他部分引起的

var abc = new XMLHttpRequest();
  var url = "http://myurl";
  abc.open("POST", url, true);
  abc.setRequestHeader("Content-type","application/json");
  abc.onreadystatechange = function () {
    if (abc.status >= 200 && abc.status < 300) {
        console.log(abc.responseText);
        console.log("Success!!");
    } else {
      console.log("Error!");
    }

【问题讨论】:

    标签: javascript post xmlhttprequest


    【解决方案1】:

    一个值不能同时为&gt;= 200 和小于200。因此,您将始终收到Error 消息。我认为您需要检查statusCode 仅与200 进行比较。但也要注意你得到了status。如果您要进入cross site,您将获得status 代码设置为0

    var abc = new XMLHttpRequest();
    var url = 'https://jsonplaceholder.typicode.com/posts/1';
    
    abc.onreadystatechange = function () {
      console.log(abc.status);
      if (abc.status === 200) {
          console.log(abc.responseText);
          console.log("Success!!");
      } else {
        console.log("Error!");
      }
    }
    
    abc.open("GET", url, true);
    abc.setRequestHeader("Content-type","application/json");

    【讨论】:

    • 感谢您将我推向正确的方向!我选择了不同的解决方案(参见上面的工作代码)。对问题 (b) 有任何想法吗?
    • @Chris 它只被调用一次。也许您的代码的其他部分有另一个问题?
    • 这样的话,这个问题将被标记为已回答,谢谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-16
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 2018-06-13
    • 2016-11-27
    相关资源
    最近更新 更多