我有一个谷歌浏览器扩展程序,它在按下按钮时执行xmlhttp请求到服务器。如果服务器关闭,我正在处理该错误。我想实现的是在越来越多的秒数后重试请求。我就这样做:xmlhttp请求具有奇怪的行为,并且状态为0
var execute = function(method, url, i){
//if timeout doesn't exist, create one
if(!i){
i = 1000;
}
var xmlhttp = new XMLHttpRequest();
xmlhttp.open(method, url, true);
xmlhttp.onreadystatechange = function(){
if (xmlhttp.status != 200) {
// Handle error, retry request
console.log("xmlhttp.status = " + xmlhttp.status + " and xmlhttp.readyState = " + xmlhttp.readyState);
setTimeout("execute('"+method+"', '"+url+"', "+i*2+")", i);
return;
}
};
xmlhttp.send(null);
}
基本上,如果有某种问题,我再次重试请求。如果服务器已启动,有一点问题都没有,但如果服务器关闭的JavaScript扔下我一个错误说:
PUT http://localhost:3000/buy/2/id=1329664820124
executepopup.html:127
(anonymous function)
这是没有太大意义,但却。日志中的状态显示为“0”,这也非常糟糕。如果在此过程中再次打开服务器,它应该停止这样做,但如果成功(我在服务器中看到一条日志告诉我它已收到请求),它会一直调用execute
方法。如果服务器打开,我不知道如何停止这种递归。难道我做错了什么?这个状态是否等于零问题?
非常感谢
您在哪里运行此代码?在内容中,还是在后台页面?什么是完整的代码?您是否已经将该域添加到'manifest.json'的'permissions'部分? – 2012-02-19 15:49:05
是的,域被添加,否则它不能与服务器通信,对吧?此代码在我的扩展的弹出页面中运行。 – Masiar 2012-02-19 16:14:27