2010-07-15 3 views
183

Ich versuche, Anforderungsheader in einem AJAX-GET mit jQuery übergeben. Im folgenden Block übergibt "data" automatisch die Werte in der Querystring. Gibt es eine Möglichkeit, diese Daten stattdessen im Anforderungsheader zu übergeben?Übergeben Sie Anforderungsheader in einem jQuery AJAX GET-Aufruf

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

Die folgende funktionierten nicht entweder

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

Antwort

216

Verwendung 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

+2

+1 schnell und einfach – Anurag

+0

Awesome! Danke Adam. – Cranialsurge

+2

ich weiß, das ist jetzt super-alt. aber ich wollte hinzufügen, dass es ein Komma geben sollte nach: beforeSend: Funktion (xhr) {xhr.setRequestHeader ('X-Test-Header', 'Test-Wert');} –

306

Ab jQuery 1.5, gibt es eine headers Hash Sie passieren in sich wie folgt:

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

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

Header (hinzugefügt 1.5): Eine Karte von zusätzlichen Header Schlüssel/Wert Paare mit der Anfrage zu senden. Diese Einstellung wird vor dem Aufruf der beforeSend-Funktion festgelegt. Daher können alle Werte in der Kopfzeileneinstellung von der Funktion vor dem Senden überschrieben werden.

+5

Kann dies global eingestellt werden? – Trip

+63

Ja: '$ .ajaxSetup ({headers: {" X-Test-Header ":" Testwert "}})' – Lukas

+5

Die jQuery-Dokumente empfehlen nicht mehr $ .ajaxSetup() (http: // api .jquery.com/jQuery.ajaxSetup /) –

18

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

+0

Verwenden von jQuery 1.7.2, C# API 2.x, beim Versuch, aus dem Header zu extrahieren 'HttpRequestMessage r = new HttpRequestMessage(); int mylogonID = Convert.ToInt32 (r.Headers.GetValues ​​("logonID")); 'Fehler wegen weil ** Die angegebene Kopfzeile wurde nicht gefunden. ** Weil r.Headers leer ist. – Jeb50

+0

möchten Sie vielleicht versuchen, etwas wie - string [] IDs = System.Web.HttpContext.Current.Request.Headers ["LogonID"]. Split (','); – enthusiast

Verwandte Themen