2013-08-09 6 views
1

J'essaie d'obtenir la valeur d'en-tête « Date » comme celui-ci, mais il donne:Récupère les entêtes Ajax JQuery

xhr.getResponseHeader is not a function 

Je vois l'en-tête de réponse dans Firebug et il existe: S

Peut-être pas de support JQuery ? Cela peut-il être fait en JavaScript à la place peut-être? doit travailler, je peux voir les en-têtes ...

code:

function ajaxDate(myUrl){ 
var res;  
var ajaxCall=$.ajax({ 
     type: 'GET', 
     url: myUrl, 
    crossDomain: true, 
     async: false, 
     cache: false 
    }).always(function(output, status, xhr) { 
      //alert(xhr.getResponseHeader("MyCookie")); 
     console.log(xhr); 
     console.log(output); 
     console.log(status); 
    res=xhr.getResponseHeader('Date'); 
     }); 
    return res; 
} 

décharge de débogage Firebug, url: www.google.se:

200 OK 92ms jquery.min js (ligne 5)

têtes de réponse

Alternate-Protocol 80:quic 
Cache-Control private, max-age=0 
Content-Encoding gzip 
Content-Type text/html; charset=UTF-8 
Date Fri, 09 Aug 2013 00:57:43 GMT 
Expires -1 
P3P CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info." 
Server gws 
Set-Cookie PREF=ID=e6503cda76a:FF=0:TM=1376009863:LM=1376009863:S=pByclnZqvnZs2k5S; expires=Sun, 09-Aug-2015 00:57:43 GMT; path=/; domain=.google.se, expires=Sat, 08-Feb-2014 00:57:43 GMT; path=/; domain=.google.se; HttpOnly 
Transfer-Encoding chunked 
x-frame-options SAMEORIGIN 
x-xss-protection 1; mode=block 

Demander d'en-têtes

Accept */* 
Accept-Encoding gzip, deflate 
Accept-Language en-US,en;q=0.5 
Host www.google.se 
Origin http://localhost/ 
Referer http://localhost/ 
User-Agent .... 

console.log (xhr)

[Exception... "Failure" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js :: .send :: line 5" data: no] { name="NS_ERROR_FAILURE", message="Failure", result=2147500037, more...} 
auto.js (line 52) 

console.log (sortie)

Object { readyState=0, status=0, statusText="[Exception... "Failure"...d :: line 5" data: no]"} 
auto.js (line 53) 

console.log (status)

error 
+0

[la docs] (http://api.jquery.com/jQuery.ajax/) rapport 2 signatures différentes pour '.always', l'objet XHR jquery étant soit le 1er ou le 3 Argument - ont vous avez essayé '.always (fonction (xhr, status, output)'? – collapsar

+0

@PHPglue: vous ne voyez pas la [page dans les docs] (http://api.jquery.com/jQuery.ajax/), plus précisément l'avis de désapprobation. '.always' remplace' .complete' comme le rappel à traiter après l'achèvement de la requête ajax indépendamment de son résultat – collapsar

+0

le succès est déprimé? Testé avec succès et il n'y avait pas de succès –

Répondre

2

La signature de toujours est

.always(function(data|jqXHR, textStatus, jqXHR|errorThrown) { }); 

si mis en correspondance avec votre méthode

.always(function(output, status, xhr) { 

Cette ligne

res=xhr.getResponseHeader('Date'); // If response is a success 

censé être

res=output.getResponseHeader('Date'); // if response fails 

On dirait que votre méthode échoue qui mappe la même méthode pour errorThrownAu lieu de cela, vous pouvez écrire une méthode distincte fail pour le gérer ou apporter une petite modification à la syntaxe.

res= output.getResponseHeader ? output.getResponseHeader.get('Date') 
           : xhr.getResponseHeader.get('Date') 
+0

Je vais tester cela, ça sonne très bien –

+0

Ma méthode échoue mais avec votre solution elle me donne plutôt TypeError: output.getResponseHeader.get n'est pas une fonction –

+0

Pouvez-vous essayer de mettre un point de débogage à l'intérieur de ce rappel et d'inspecter les arguments –

Questions connexes