我想检查页面是否返回状态代码401.这可能吗?
这是我的尝试,但它只返回0.
$.ajax({
url: "http://my-ip/test/test.php",
data: {},
complete: function(xhr, statusText){
alert(xhr.status);
}
});
答案 0 :(得分:89)
这可以使用jQuery $.ajax()
方法
$.ajax(serverUrl, {
type: OutageViewModel.Id() == 0 ? "POST" : "PUT",
data: dataToSave,
statusCode: {
200: function (response) {
alert('1');
AfterSavedAll();
},
201: function (response) {
alert('1');
AfterSavedAll();
},
400: function (response) {
alert('1');
bootbox.alert('<span style="color:Red;">Error While Saving Outage Entry Please Check</span>', function () { });
},
404: function (response) {
alert('1');
bootbox.alert('<span style="color:Red;">Error While Saving Outage Entry Please Check</span>', function () { });
}
}, success: function () {
alert('1');
},
});
答案 1 :(得分:60)
第三个参数是XMLHttpRequest对象,所以你可以做任何你想做的事。
$.ajax({
url : 'http://example.com',
type : 'post',
data : 'a=b'
}).done(function(data, statusText, xhr){
var status = xhr.status; //200
var head = xhr.getAllResponseHeaders(); //Detail header info
});
答案 2 :(得分:20)
使用错误回调。
例如:
jQuery.ajax({'url': '/this_is_not_found', data: {}, error: function(xhr, status) {
alert(xhr.status); }
});
将提醒404
答案 3 :(得分:7)
我认为您还应该实现$.ajax方法的错误功能。
错误(XMLHttpRequest,textStatus, errorThrown)功能
请求时要调用的函数 失败。该功能通过三次 arguments:XMLHttpRequest对象, 描述错误类型的字符串 发生了并且是可选的 异常对象,如果发生了一个。 第二个可能的值 参数(除了null)是“超时”, “错误”,“未修改”和 “parsererror”。
$.ajax({
url: "http://my-ip/test/test.php",
data: {},
complete: function(xhr, statusText){
alert(xhr.status);
},
error: function(xhr, statusText, err){
alert("Error:" + xhr.status);
}
});
答案 4 :(得分:7)
我找到了这个解决方案,你可以简单地, 使用状态代码检查服务器响应代码。
$.ajax({
type : "POST",
url : "/package/callApi/createUser",
data : JSON.stringify(data),
contentType: "application/json; charset=UTF-8",
success: function (response) {
alert("Account created");
},
statusCode: {
403: function() {
// Only if your server returns a 403 status code can it come in this block. :-)
alert("Username already exist");
}
},
error: function (e) {
alert("Server error - " + e);
}
});
答案 5 :(得分:6)
$.ajax({
url: "http://my-ip/test/test.php",
data: {},
error: function(xhr, statusText, errorThrown){alert(xhr.status);}
});
答案 6 :(得分:3)
我将jQuery Ajax封装为一个方法:
var http_util = function (type, url, params, success_handler, error_handler, base_url) {
if(base_url) {
url = base_url + url;
}
var success = arguments[3]?arguments[3]:function(){};
var error = arguments[4]?arguments[4]:function(){};
$.ajax({
type: type,
url: url,
dataType: 'json',
data: params,
success: function (data, textStatus, xhr) {
if(textStatus === 'success'){
success(xhr.code, data); // there returns the status code
}
},
error: function (xhr, error_text, statusText) {
error(xhr.code, xhr); // there returns the status code
}
})
}
用法:
http_util('get', 'http://localhost:8000/user/list/', null, function (status_code, data) {
console(status_code, data)
}, function(status_code, err){
console(status_code, err)
})
答案 7 :(得分:0)
我在使用ajax + jQuery v3时遇到了主要问题,同时从JSON API获取响应状态代码和数据。 jQuery.ajax仅在状态为成功时解码JSON数据,并且还会根据状态代码围绕回调参数的顺序进行交换。 g。
解决此问题的最佳方法是调用.always
链方法并进行一些清理。这是我的代码。
$.ajax({
...
}).always(function(data, textStatus, xhr) {
var responseCode = null;
if (textStatus === "error") {
// data variable is actually xhr
responseCode = data.status;
if (data.responseText) {
try {
data = JSON.parse(data.responseText);
} catch (e) {
// Ignore
}
}
} else {
responseCode = xhr.status;
}
console.log("Response code", responseCode);
console.log("JSON Data", data);
});
答案 8 :(得分:-1)
在WAMP SERVER apache2中测试
httpd.conf和agregar esto:
Data Source:
------------------------------
TODAY TEST
YESTERDAY HELLO
YESTERDAY HI
YESTERDAY HELLO
BEFORE YESTERDAY HEY
BEFORE YESTERDAY HI
A WEEK AGO HELLO
A WEEK AGO HEY
Assuming fxLookUpList will have "HELLO" and "HI";
Output =>
YESTERDAY | HELLO
YESTERDAY | HI
Assuming fxLookUpList will have "HEY" and "HI";
Output =>
YESTERDAY | HELLO
BEFORE YESTERDAY | HEY
Assuming fxLookUpList will have "TEST" and "HEY";
Output =>
TODAY | TEST
BEFORE YESTERDAY | HEY
在apache上启用下一个模块 headers_module
重新启动所有服务