मैं jQuery के साथ HTTP स्थिति कोड कैसे प्राप्त करूं?




ajax xmlhttprequest (6)

$.ajax({
    url: "http://my-ip/test/test.php",
    data: {},
    error: function(xhr, statusText, errorThrown){alert(xhr.status);}
});

मैं यह जांचना चाहता हूं कि कोई पृष्ठ स्टेटस कोड 401 देता है या नहीं। क्या यह संभव है?

यहां मेरी कोशिश है, लेकिन यह केवल 0 देता है।

$.ajax({
    url: "http://my-ip/test/test.php",
    data: {},
    complete: function(xhr, statusText){
    alert(xhr.status); 
    }
});

मुझे लगता है कि आपको $.ajax विधि के त्रुटि फ़ंक्शन को भी कार्यान्वित करना चाहिए।

त्रुटि (XMLHttpRequest, टेक्स्टस्टैटस, त्रुटि ट्राउन) फ़ंक्शन

अनुरोध विफल होने पर एक फ़ंक्शन कॉल किया जाना चाहिए। फ़ंक्शन तीन तर्क पारित किया गया है: XMLHttpRequest ऑब्जेक्ट, एक स्ट्रिंग जो त्रुटि हुई है और एक वैकल्पिक अपवाद ऑब्जेक्ट का वर्णन करता है, यदि कोई हुआ। दूसरे तर्क (शून्य के अलावा) के संभावित मूल्य "टाइमआउट", "त्रुटि", "नोटमोडाइफाइड" और "पार्सररर" हैं।

$.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); 
    }
});

यह 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');
   },
});

तीसरा तर्क 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
});

मुझे यह समाधान मिला जहां आप बस स्थिति कोड का उपयोग कर सर्वर प्रतिक्रिया कोड की जांच कर सकते हैं।

उदाहरण :

$.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);
} 
});

मैं एक विधि में jQuery अजाक्स encapsulate:

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)
})




http-status-code-401