我已经阅读了几篇与此类问题相关的帖子,但我还是没有在这里找出问题。
当调用以下函数并收到200响应时,一切都很好;当遇到404时,重复ajax;添加超时仅限制重复请求的时间范围。这有一个简单的原因,但它让我不知道......
function myFunction(ID) {
var url = 'http://example.org/' + ID;
var response;
$.ajax(url, {
success: function (responseText) {
if (responseText !== undefined) {
response = responseText;
}
},
error: function (xhr, ajaxOptions, errorMsg) {
if (xhr.status == 404) {
console.log('404: ' + errorMsg);
} else if (xhr.status == 401) {
console.log('401: ' + errorMsg);
}
}
});
return response;
}
答案 0 :(得分:1)
您可以使用以下给定的方法获取错误数据,而无需在AJAX中重复。
$.ajax(url, {
success: function (responseText) {
if (responseText !== undefined) {
response = responseText;
}
},
error: function (xhr) {
//the status is in xhr.status;
//the message if any is in xhr.statusText;
}
});
<强>更新强>
您无法返回响应,因为您有异步请求,并且在实际的ajax请求给出响应之前将返回响应变量。所以我建议您使用回调函数成功使用同步请求。
因此,要获得响应,您可以拥有如下函数:
function getResponse() {
return $.ajax({
type: "GET",
url: your_url,
async: false
}).responseText;
}
或者回调方法是:
$.ajax(url, {
success: function (responseText) {
if (responseText !== undefined) {
theCallbackFunction(responseText);
}
},
error: function (xhr) {
//the status is in xhr.status;
//the message if any is in xhr.statusText;
}
});
function theCallbackFunction(data)
{
//do processing with the ajax response
}