问题描述
我有一个看起来不错的 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,但我不明白错误的根源:
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)