2010-07-15 51 views
183

Estoy tratando de pasar encabezados de solicitud en un AJAX GET usando jQuery. En el siguiente bloque, "datos" pasa automáticamente los valores en la cadena de consulta. ¿Hay alguna manera de pasar esos datos en el encabezado de solicitud en su lugar?Pasar encabezados de solicitud en una llamada jQuery AJAX GET

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

El siguiente tampoco funcionó

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

Respuesta

216

Uso 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 rápida y fácil – Anurag

+0

impresionante! Gracias Adam. – Cranialsurge

+2

Sé que esto ya es muy viejo. pero quería agregar que debería haber una coma después de: beforeSend: function (xhr) {xhr.setRequestHeader ('X-Test-Header', 'test-value');} –

306

A partir de jQuery 1.5, existe un hash headers se puede pasar en la siguiente forma:

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

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

cabeceras (añadieron 1,5): Un mapa de adicional cabecera clave/valor pares para enviar junto con la solicitud. Esta configuración se establece antes de llamar a la función beforeSend; por lo tanto, cualquier valor en la configuración de encabezados se puede sobrescribir desde la función beforeSend.

+5

¿Se puede establecer esto globalmente? – Trip

+63

Sí: '$ .ajaxSetup ({headers: {" X-Test-Header ":" test-value "}})' – Lukas

+5

Los documentos jQuery no recomiendan el uso de $ .ajaxSetup() más (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

Usando jQuery 1.7.2, C# API 2.x, al intentar extraer del encabezado 'HttpRequestMessage r = new HttpRequestMessage(); int mylogonID = Convert.ToInt32 (r.Headers.GetValues ​​("logonID")); error out porque ** El encabezado dado no se encontró. ** porque r.Headers está vacío. – Jeb50

+0

es posible que desee probar algo como - cadena [] ids = System.Web.HttpContext.Current.Request.Headers ["logonID"]. Split (','); – enthusiast

Cuestiones relacionadas