gpt4 book ai didi

javascript - 使用核心javascript时ajax调用中的settimeout

转载 作者:数据小太阳 更新时间:2023-10-29 06:15:41 24 4
gpt4 key购买 nike

我有一个调用 ajax 的 JavaScript 函数。现在我需要在此函数中添加超时,就像调用服务花费的时间超过污染时间时,ajax 调用应该超时并显示默认消息。我不想在其中使用 Jquery。

这是我的代码:

AJAX = function (url, callback, params) {
var dt = new Date();
url = (url.indexOf('?') == -1) ? url + '?_' + dt.getTime() : url + '&_' + dt.getTime();
if (url.indexOf('callback=') == -1) {
ajaxCallBack(url, function () {
if (this.readyState == 4 && this.status == 200) {
if (callback) {
if (params) {
callback(this.responseText, params);
} else {
callback(this.responseText);
}
}
}
});
} else {
var NewScript = d.createElement("script");
NewScript.type = "text/javascript";
NewScript.src = url + '&_' + Math.random();
d.getElementsByTagName('head')[0].appendChild(NewScript);
}
},
ajaxCallBack = function (url, callback) {
var xmlhttp;
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = callback;
xmlhttp.open("GET", url, true);
xmlhttp.send();
}

最佳答案

这是一个 example如何处理超时:

var xmlHttp = new XMLHttpRequest();
xmlHttp.open("GET", "http://www.example.com", true);

xmlHttp.onreadystatechange=function(){
if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
clearTimeout(xmlHttpTimeout);
alert(xmlHttp.responseText);
}
}
// Now that we're ready to handle the response, we can make the request
xmlHttp.send("");
// Timeout to abort in 5 seconds
var xmlHttpTimeout=setTimeout(ajaxTimeout,5000);
function ajaxTimeout(){
xmlHttp.abort();
alert("Request timed out");
}

在 IE8 中,您可以向 XMLHttpRequest 对象添加超时事件处理程序。

var xmlHttp = new XMLHttpRequest();
xmlHttp.ontimeout = function(){
alert("request timed out");
}

虽然使用 javascript 框架来执行此操作,但我不知道您为什么不使用它,您喜欢不必要的工作吗? :)

关于javascript - 使用核心javascript时ajax调用中的settimeout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34350846/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com