एक jQuery AJAX GET कॉल में अनुरोध हेडर पास करें


242

मैं jQuery का उपयोग करके AJAX GET में अनुरोध हेडर पारित करने की कोशिश कर रहा हूं। निम्नलिखित ब्लॉक में, "डेटा" स्वचालित रूप से क्वेरिस्ट्रिंग में मूल्यों को पारित करता है। क्या इसके बजाय अनुरोध शीर्षलेख में उस डेटा को पास करने का कोई तरीका है?

$.ajax({
         url: "http://localhost/PlatformPortal/Buyers/Account/SignIn",
         data: { signature: authHeader },
         type: "GET",
         success: function() { alert('Success!' + authHeader); }
      });

निम्नलिखित या तो काम नहीं किया

$.ajax({
         url: "http://localhost/PlatformPortal/Buyers/Account/SignIn",
         beforeSend: { signature: authHeader },
         async: false,                    
         type: "GET",
                    success: function() { alert('Success!' + authHeader); }
      });

जवाबों:


289

उपयोग करें beforeSend:

$.ajax({
         url: "http://localhost/PlatformPortal/Buyers/Account/SignIn",
         data: { signature: authHeader },
         type: "GET",
         beforeSend: function(xhr){xhr.setRequestHeader('X-Test-Header', 'test-value');},
         success: function() { alert('Success!' + authHeader); }
      });

http://api.jquery.com/jQuery.ajax/

http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader-method


4
मुझे पता है कि यह अब तक सुपर-पुराना है। लेकिन मैं यह जोड़ना चाहता था कि इसके बाद एक अल्पविराम होना चाहिए: इससे पहले: समारोह (xhr) {xhr.setRequestHeader ('X-Test-Header', 'test-value');}
Matthew -360

पहले: समारोह (xhr) {xhr.setRequestHeader ('X-Test-Header', 'test-value');} क्रोम और फ़ायरफ़ॉक्स में अच्छा काम करता है लेकिन IE8 में नहीं। कोई एक्स-टेस्ट-हैडर नहीं है। इसे कैसे जोड़ेंगे? Thx
user1940268

मैंने कोशिश की है, लेकिन जब मैंने "jquery-1.11.1.min.js" का उपयोग करते हुए हेडर डिटेल पास की है तो यह त्रुटि फेंक देता है
घनश्याम बारावलिया

4
नीचे दिए गए उत्तर को देखें, बहुत अधिक प्रासंगिक
thedanotto

मैं जोड़ने के लिए क्या चाहते हैं X-Test-Headerऔर X-Test-Headerकरने के लिए beforeSend?
16

394

JQuery 1.5 के अनुसार, एक headersहैश है जिसे आप निम्न प्रकार से पास कर सकते हैं:

$.ajax({
    url: "/test",
    headers: {"X-Test-Header": "test-value"}
});

से http://api.jquery.com/jQuery.ajax :

हेडर (जोड़ा गया 1.5): अनुरोध के साथ भेजने के लिए अतिरिक्त हेडर की / वैल्यू पेयर का मैप। यह सेटिंग पहले फ़ंक्शन को कॉल करने से पहले सेट की गई है; इसलिए, हेडर सेटिंग के किसी भी मान को पहले के फ़ंक्शन के भीतर से अधिलेखित किया जा सकता है।


6
क्या इसे विश्व स्तर पर स्थापित किया जा सकता है?
यात्रा

77
हाँ:$.ajaxSetup({headers: {"X-Test-Header": "test-value"}})
लुकास

6
JQuery के डॉक्स $ .ajaxSetup () का उपयोग करने की अनुशंसा नहीं करते हैं ( api.jquery.com/jQuery.ajaxSetup )
ग्लेन सेले

2
@Glen उनका तर्क यह है कि प्लगइन्स काम करने के लिए डिफ़ॉल्ट सेटिंग्स की उम्मीद कर सकते हैं। व्यक्तिगत रूप से, मुझे लगता है कि यह एक दिया गया है कि यदि आप विश्व स्तर पर कुछ बदलते हैं, तो डिफ़ॉल्ट सेटिंग्स पर निर्भर कुछ ऐसा काम नहीं कर सकता है।
मिनीरोग्नोर्क

1
@ वैश्विक रूप से मेरी सिफारिश के लिए ... $ .ajax () को कॉल करने के बजाय ajax कॉल (अमूर्त) के लिए अपना स्वयं का आवरण लिखें।
एरिक फिलिप्स

45

$.ajax({
            url: URL,
            type: 'GET',
            dataType: 'json',
            headers: {
                'header1': 'value1',
                'header2': 'value2'
            },
            contentType: 'application/json; charset=utf-8',
            success: function (result) {
               // CallBack(result);
            },
            error: function (error) {
                
            }
        });


JQuery 1.7.2, C # API 2.x का उपयोग करते समय, जब हेडर HttpRequestMessage r = new HttpRequestMessage(); int mylogonID = Convert.ToInt32(r.Headers.GetValues("logonID"));त्रुटि से निकालने की कोशिश कर रहा है क्योंकि दिए गए हेडर नहीं मिला। क्योंकि r.Headers खाली है।
Jeb50

आप कुछ इस तरह की कोशिश करना चाह सकते हैं - string [] ids = System.Web.HttpContext.Current.Request.Headers ["logonID"]। Split (',');
उत्साही
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.