JQuery $। एजेक्स में रीडायरेक्ट का पता लगा रहा है?


Answers

आने वाला कल आपका स्वागत करता है!

अभी xhr वस्तु से हमारे पास "responseURL" संपत्ति है वाह!

XMLHttpRequest में प्रतिक्रिया यूआरएल कैसे प्राप्त करें देखें ?

हालांकि, jQuery (कम से कम 1.7.1) XMLHttpRequest ऑब्जेक्ट पर प्रत्यक्ष रूप से पहुंच नहीं देता है। आप इस तरह से कुछ का उपयोग कर सकते हैं:

var xhr;
var _orgAjax = jQuery.ajaxSettings.xhr;
jQuery.ajaxSettings.xhr = function () {
  xhr = _orgAjax();
  return xhr;
};

jQuery.ajax('http://test.com', {
  success: function(responseText) {
    console.log('responseURL:', xhr.responseURL, 'responseText:', responseText);
  }
});

यह एक साफ समाधान नहीं है और मुझे लगता है कि jQuery टीम भविष्य के रिलीज में प्रतिक्रिया के लिए कुछ बनाती है।

टीआईपी : सिर्फ मूल यूआरएल की प्रतिक्रिया यूआरएल के साथ तुलना करें। यदि यह बराबर है तो कोई रीडायरेक्ट नहीं दिया गया था। यदि यह "अपरिभाषित" है तो प्रतिक्रिया यूआरएल शायद समर्थित नहीं है हालांकि, निक गारवे ने कहा कि, AJAX अनुरोध को कभी भी रीडायरेक्ट का पालन नहीं करने का मौका मिलता है, लेकिन आप प्रतिक्रिया का उपयोग करके कई कार्यों को हल कर सकते हैं।

Question

मैं एक यूआरएल प्राप्त करने के लिए jQuery का इस्तेमाल करना चाहता हूं और स्पष्ट रूप से जांचना चाहता हूं कि क्या यह 302 रीडायरेक्ट के साथ प्रतिक्रिया करता है, लेकिन रीडायरेक्ट का पालन करें।

jQuery का $.ajax हमेशा पुनर्निर्देशन का पालन करता है। मैं इसे कैसे रोक सकता हूं और इसे बिना अनुदेश को देख सकता हूं?

"Jquery ajax redirect" जैसे शीर्षक के साथ कई सवाल हैं, लेकिन वे सभी सीधे किसी अन्य लक्ष्य को पूरा करने में शामिल होते हैं, बजाय सीधे सर्वर की स्थिति की जांच करने के बजाय।




जबकि अन्य लोगों ने इस प्रश्न का उत्तर दिया (दुख की बात) सही है कि यह जानकारी हमारे द्वारा ब्राउज़र द्वारा छिपाई गई है, मैंने सोचा था कि मैं एक वैकल्पिक हल पोस्ट करूंगा जिसका मैं साथ आया था:

मैंने अनुरोध किया गया यूआरएल युक्त कस्टम रिस्पांस हेडर ( X-Response-Url ) सेट करने के लिए मेरे सर्वर ऐप को कॉन्फ़िगर किया है। जब भी मेरा xhr.getResponseHeader("x-response-url") कोड प्रतिक्रिया प्राप्त करता है, तो यह जांचता है कि अगर xhr.getResponseHeader("x-response-url") परिभाषित किया जाता है, तो उस स्थिति में यह उस यूआरएल से तुलना करता है जिसे मूल रूप से $.ajax() माध्यम से अनुरोध किया गया था। अगर स्ट्रिंग अलग होती है, मुझे पता है कि एक रीडायरेक्ट था, और इसके अतिरिक्त, हम वास्तव में किस यूआरएल में पहुंचे

इसकी कुछ सर्वर-साइड मदद की आवश्यकता की कमी होती है, और यदि दौर की यात्रा के दौरान यूआरएल को मूंग कर दिया जाता है (कारण उद्धरण / एन्कोडिंग मुद्दों आदि के कारण) तो टूट सकता है ... लेकिन 99% मामलों के लिए, ऐसा लगता है काम किया

सर्वर साइड पर, मेरा विशिष्ट केस पिरामिड वेब फ़्रेमवर्क का उपयोग कर एक अजगर अनुप्रयोग था, और मैंने निम्न स्निपेट का उपयोग किया था:

import pyramid.events

@pyramid.events.subscriber(pyramid.events.NewResponse)
def set_response_header(event):
    request = event.request
    if request.is_xhr:
        event.response.headers['X-Response-URL'] = request.url