जवाबों:
वहाँ कई समाधान आप क्या जरूरत पर निर्भर करता है ...
यदि आप किसी व्यक्तिगत अनुरोध में एक कस्टम हेडर (या हेडर का सेट) जोड़ना चाहते headers
हैं तो संपत्ति जोड़ें :
// Request with custom header
$.ajax({
url: 'foo/bar',
headers: { 'x-my-custom-header': 'some value' }
});
यदि आप हर अनुरोध में एक डिफ़ॉल्ट हेडर (या हेडर का सेट) जोड़ना चाहते हैं तो उपयोग करें $.ajaxSetup()
:
$.ajaxSetup({
headers: { 'x-my-custom-header': 'some value' }
});
// Sends your custom header
$.ajax({ url: 'foo/bar' });
// Overwrites the default header with a new header
$.ajax({ url: 'foo/bar', headers: { 'x-some-other-header': 'some value' } });
यदि आप हर अनुरोध में एक हेडर (या हेडर का सेट) जोड़ना चाहते हैं तो beforeSend
हुक का उपयोग करें $.ajaxSetup()
:
$.ajaxSetup({
beforeSend: function(xhr) {
xhr.setRequestHeader('x-my-custom-header', 'some value');
}
});
// Sends your custom header
$.ajax({ url: 'foo/bar' });
// Sends both custom headers
$.ajax({ url: 'foo/bar', headers: { 'x-some-other-header': 'some value' } });
संपादित करें (अधिक जानकारी): एक बात का पता होना चाहिए कि ajaxSetup
आप केवल डिफ़ॉल्ट हेडर के एक सेट को परिभाषित कर सकते हैं और आप केवल एक को परिभाषित कर सकते हैं beforeSend
। यदि आप ajaxSetup
कई बार कॉल करते हैं, तो केवल हेडर का अंतिम सेट भेजा जाएगा और केवल आखिरी पहले-कॉलबैक निष्पादित होगा।
beforeSend
कॉलबैक को परिभाषित कर सकते हैं । यदि आप $.ajaxSetup({ beforeSend: func... })
दो बार कॉल करते हैं तो दूसरा कॉलबैक केवल वही होगा जो आग लगाता है।
ajaxSetup
।
या, यदि आप भविष्य के प्रत्येक अनुरोध के लिए कस्टम हेडर भेजना चाहते हैं, तो आप निम्नलिखित का उपयोग कर सकते हैं:
$.ajaxSetup({
headers: { "CustomHeader": "myValue" }
});
इस तरह से हर भविष्य के अजाक्स अनुरोध में कस्टम हेडर शामिल होंगे, जब तक कि अनुरोध के विकल्पों द्वारा स्पष्ट रूप से ओवरराइड नहीं किया जाएगा। आप यहाँ पर अधिक जानकारी पा सकते हैंajaxSetup
यहाँ XHR2 का उपयोग करके एक उदाहरण दिया गया है:
function xhrToSend(){
// Attempt to creat the XHR2 object
var xhr;
try{
xhr = new XMLHttpRequest();
}catch (e){
try{
xhr = new XDomainRequest();
} catch (e){
try{
xhr = new ActiveXObject('Msxml2.XMLHTTP');
}catch (e){
try{
xhr = new ActiveXObject('Microsoft.XMLHTTP');
}catch (e){
statusField('\nYour browser is not' +
' compatible with XHR2');
}
}
}
}
xhr.open('POST', 'startStopResume.aspx', true);
xhr.setRequestHeader("chunk", numberOfBLObsSent + 1);
xhr.onreadystatechange = function (e) {
if (xhr.readyState == 4 && xhr.status == 200) {
receivedChunks++;
}
};
xhr.send(chunk);
numberOfBLObsSent++;
};
उम्मीद है की वो मदद करदे।
यदि आप अपना ऑब्जेक्ट बनाते हैं, तो आप नाम भेजने के लिए setRequestHeader फ़ंक्शन का उपयोग कर सकते हैं, और अनुरोध भेजने से पहले एक मान।
$.ajax*
फ़ंक्शन का उपयोग नहीं करते हैं b / c वे jQuery पर निर्भर नहीं करते हैं और इसके बजाय XHR का उपयोग करते हैं इसलिए यह उन मामलों में एकमात्र वैध विकल्प है।
आप jQuery का उपयोग किए बिना भी ऐसा कर सकते हैं। XMLHttpRequest की भेजने की विधि को ओवरराइड करें और वहां शीर्ष लेख जोड़ें:
XMLHttpRequest.prototype.realSend = XMLHttpRequest.prototype.send;
var newSend = function(vData) {
this.setRequestHeader('x-my-custom-header', 'some value');
this.realSend(vData);
};
XMLHttpRequest.prototype.send = newSend;
आपको डॉक्स$.ajaxSetup()
में वर्णित के उपयोग से बचना चाहिए । इसके बजाय निम्नलिखित का उपयोग करें:
$(document).ajaxSend(function(event, jqXHR, ajaxOptions) {
jqXHR.setRequestHeader('my-custom-header', 'my-value');
});
यह मानते हुए कि आप "जब अजाक्स का उपयोग कर रहे हैं" और "एक HTTP अनुरोध हेडर" का अर्थ है , तो उस headers
संपत्ति का उपयोग करें जिसे आप पास करते हैंajax()
हेडर (जोड़ा 1.5)
चूक:
{}
अनुरोध के साथ भेजने के लिए अतिरिक्त हेडर कुंजी / मान जोड़े का एक नक्शा। यह सेटिंग पहले फ़ंक्शन को कॉल करने से पहले सेट की गई है; इसलिए, हेडर सेटिंग के किसी भी मान को पहले के फ़ंक्शन के भीतर से अधिलेखित किया जा सकता है।
XMLHttpRequest ऑब्जेक्ट की "setRequestHeader" विधि का उपयोग किया जाना चाहिए
आप जेएस भ्रूण का उपयोग कर सकते हैं
beforeSend
करते हुए परिभाषित करता हूं$.ajax
?