永远不会对服务器进行 XMLHttpRequest 调用

问题描述

我有一个看起来不错的 XMLHttpRequest,它没有产生任何我能看到的错误,但我从未看到请求发送到服务器。

它就像在调用服务器之前出错或取消一样。开发工具网络部分没有网络请求。

我注意到的最重要的事情是,虽然我设置了 xhr.timeout = 15000,但 xhr 对象中的超时声明了它的 0 - 但我不知道这是否是一个问题。

这是我的请求,在响应处理中唯一打印到控制台的是 XHR OTHER 控制台消息:

function sendError(url,params) {
  return new Promise( function(resolve) {
    //url - passed from calling function
    //params - JSON.stringify({ var1:var1,var2:var2}) ; - passed from calling script
    console.log(url) ;  // prints proper url to console
    console.log(params) ; // prints proper params to console
    
    var xhr = new XMLHttpRequest();
    xhr.responseType = 'json' ;
    //var params = JSON.stringify({ type:8,subject:sub.value,message:msg.value,emailAddys:toAddresses }) ;
    xhr.onreadystatechange = function() {
      var status ;
      if (xhr.readyState == 15) {
        console.log("XHR Tiemout") ;
        console.log("Time out ready state = 15") ;
        status = {status:false,errMsg:"Time out ready state = 15"} ;
      } else if (xhr.readyState == XMLHttpRequest.DONE) {
        console.log("XHR Response") ;
        console.log(xhr.response) ;
        var res = xhr.response[0] ;
        if (xhr.status == 200) {
          // process API call results
          status = {status:true,errMsg:res.message} ;
        } else {
          status = {status:false,errMsg:res.message} ;
        }
      } else {
        console.log("XHR OTHER") ;  <----- this prints to console everytime
        console.log(xhr) ;
        status = {status:false,errMsg:"Something went wrong,no response from server"} ;
      }
      resolve(status) ;
    }
    
        xhr.open('POST',url,true);
        xhr.setRequestHeader('Pragma','no-cache') ;
        xhr.setRequestHeader('Expires',-1) ; 
        xhr.setRequestHeader('Cache-Control','no-cache,no-store,must-revalidate') ;
        xhr.setRequestHeader('Content-Type','application/json') ;
        xhr.setRequestHeader('X-Requested-With','com.mydomain') ;
        xhr.setRequestHeader('Authorization','Token ' +clientToken) ;
        xhr.timeout = 15000 ;  // 15 seconds
        xhr.ontimeout = function() { console.log("Timed Out!") ; };
        xhr.send(params);        
      }) ;
    }

这是我打印到控制台的 xhr,onreadystatechange() 函数中有一个 sendError,但我不明白错误的根源:

xhr object

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)