not - jquery getResponseHeader siempre devuelve ''indefinido''?
jquery form submit (3)
Un XMLHttpRequest seguirá de forma transparente un redireccionamiento , por lo que la solicitud final no tendrá el encabezado, ya se siguió esa redirección y verá los encabezados de respuesta de esa solicitud (no la solicitud inicial que tenía el encabezado de Location
).
Tengo un formulario que estoy enviando por ajax. Estoy usando el complemento de formulario jquery. Lo que intento hacer es obtener el encabezado ''Ubicación'' que se devuelve desde mi servidor. Puedo verlo en firebug. Pero cada vez que llamo a la función getResponseHeader () en mi exitosa devolución de llamada, siempre devuelve ''indefinido''.
Código:
form.ajaxForm({
dataType: ''xml'',
data: {format: ''xml''},
resetForm: true,
success: function(xml,status,xhr){
var location = xhr.getResponseHeader(''Location'');
alert(location);
});
la ubicación no está definida Pero puedo ver el encabezado ''Ubicación'' en firebug. ¿Qué me estoy perdiendo? Incluso si llamo getAllResponseHeaders () desde el objeto xhr, devuelve ''indefinido''
Estoy haciendo algo similar usando la forma de rails / rest de devolver un 201 "creado" con un encabezado Location al nuevo objeto y un cuerpo vacío. El método ajax de jQuery arrojará un "parseerror" cuando se encuentre con este desde su esperado json pero sin obtener nada a cambio. Simplemente capturo el redireccionamiento 201 en mi devolución de llamada de error así:
function request_error(req, textStatus, errorThrown)
{
if (req.status == 201 ) {
var created_loc = req.getResponseHeader(''Location'');
console.log(''(201) created: '' + created_loc);
// ... manual redirect here i.e. issue another ajax request to created_loc
return;
}
// ... handle an actual error here
}
¡espero que esto ayude!
Si se trata de una solicitud CORS , puede ver todos los encabezados en herramientas de depuración (como Chrome-> Inspeccionar elemento-> Red), pero el objeto xHR solo recuperará el encabezado (a través de xhr.getResponseHeader(''Header'')
) si tal un encabezado es un encabezado de respuesta simple :
-
Content-Type
-
Last-modified
-
Content-Language
-
Cache-Control
-
Expires
-
Pragma
Si no está en este conjunto, debe estar presente en el encabezado Access-Control-Expose-Headers devuelto por el servidor.
Sobre el caso en cuestión, si se trata de una solicitud CORS, solo se podrá recuperar el encabezado Location
del objeto XMLHttpRequest
si, y solo si, el encabezado siguiente también está presente:
Access-Control-Expose-Headers: Location
Si no es una solicitud CORS, XMLHttpRequest
no tendrá problemas para recuperarla.