JQuery AJAX GET çağrısında istek üstbilgilerini iletme


242

JQuery kullanarak bir AJAX GET istek başlıkları geçmek çalışıyorum. Aşağıdaki blokta, "data" otomatik olarak sorgu dizesindeki değerleri iletir. Bunun yerine bu verileri istek başlığına iletmenin bir yolu var mı?

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

Aşağıdakiler de işe yaramadı

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

Yanıtlar:


289

Kullanım 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
biliyorum bu çok eski. ama sonra bir virgül olması gerektiğini eklemek istedim: beforeSend: function (xhr) {xhr.setRequestHeader ('X-Test-Header', 'test-value');}
matthew_360

beforeSend: function (xhr) {xhr.setRequestHeader ('X-Test-Header', 'test-değer');} krom ve firefox'ta iyi çalışıyor ancak IE8'de iyi çalışmıyor. X-Test-Header gönderimi yok. nasıl düzeltilir? Thx
user1940268

denedim ama "jquery-1.11.1.min.js" kullanarak başlık detayı geçerken hata atmak
Ghanshyam Baravaliya

4
aşağıdaki cevaba bakınız, çok daha alakalı
thedanotto

Ben eklemek istersem X-Test-Headerve X-Test-Headerhiç beforeSend?
Si8

394

JQuery 1.5 itibariyle, headersaşağıdaki gibi aktarabileceğiniz bir karma vardır :

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

Http://api.jquery.com/jQuery.ajax adresinden :

başlıklar (1.5 eklendi): İstekle birlikte gönderilecek ek başlık anahtarı / değer çiftlerinin haritası. Bu ayar, beforeSend işlevi çağrılmadan önce yapılır; bu nedenle, üstbilgiler ayarındaki herhangi bir değerin beforeSend işlevi içinden yazılabilir.


6
Bu küresel olarak ayarlanabilir mi?
Yolculuk

77
Evet:$.ajaxSetup({headers: {"X-Test-Header": "test-value"}})
Lukas

6
JQuery dokümanları artık $ .ajaxSetup () kullanılmasını önermez ( api.jquery.com/jQuery.ajaxSetup )
Glen Selle

2
@Glen Onların mantığı eklentilerin varsayılan ayarların çalışmasını beklemesidir. Şahsen, küresel olarak bir şeyi değiştirirseniz, varsayılan ayarlara bağlı olan bir şeyin işe yaramayabileceğini düşünüyorum.
MiniRagnarok

1
@Trip Global için önerim ... $ .ajax () yerine ajax çağrıları (soyutlama) için kendi paketleyicinizi yazın.
Erik Philips

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 kullanarak, verilen üstbilgi bulunamadığı için üstbilgi HttpRequestMessage r = new HttpRequestMessage(); int mylogonID = Convert.ToInt32(r.Headers.GetValues("logonID"));hatasından çıkarmaya çalışırken . çünkü r.Headers boş.
Jeb50

- string [] ids = System.Web.HttpContext.Current.Request.Headers ["logonID"]. Split (',') gibi bir şey denemek isteyebilirsiniz.
meraklı
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.