微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决永远不会对服务器进行 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 举报,一经查实,本站将立刻删除。