2009-06-06 13 views
0

Je reçois un appel XHR pour obtenir une date, mais je n'arrive pas à la passer dans la page. J'ai juste besoin de passer la date de l'appel XHR à une variable à insérer via document.write.Problème de transmission de variable JS facile

Voici mon code:

var upDated 

function getUpdated(){ 

xmlhttp.open("HEAD", "MBP_box.JPG",true); 
xmlhttp.onreadystatechange=function() { 
    if (xmlhttp.readyState==4) { 
    upDated = xmlhttp.getResponseHeader("Last-Modified"); 
    alert(upDated); 
    } 
} 
xmlhttp.send(null) 
} 

et dans le corps ....

document.write(upDated); 
+0

Comment obtenez-vous cette date dans l'appel XHR? –

+0

vous pouvez obtenir les en-têtes de réponse comme indiqué ci-dessus. Voir http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html pour une liste des en-têtes http –

+0

Ceci est un ref mieux organisé http://en.wikipedia.org/wiki/List_of_HTTP_headers –

Répondre

3

au lieu d'alerte (mise à jour); vous devriez avoir quelque chose comme:

document.getElementById("some-element").innerHTML = upDated; 

L'idée est assez simple, vous devez garder la logique dans la fonction de rappel (celui attribué à onReadyStateChange) que vous ne savez pas quand il sera appelé (il sera appelé quand le navigateur a reçu une réponse du serveur, ce qui peut tout aussi bien ne pas arriver). Donc, avoir du code après avoir défini cette connexion ne fonctionnera pas.

+0

dammit. Oui bien sûr. im mélanger ancien et nouveau. (mon JS est très sommaire ..) cela est parfaitement logique maintenant. :) –

+0

Travailler. merci beaucoup :) http://swind.co.uk/_bin/TEST/XHR_TEST –

0

Je ne suis pas sûr de comprendre ce que vous voulez - voulez-vous dire que vous voulez que la valeur de upDated, telle que renvoyée via l'appel Ajax, soit insérée dans le corps du document via document.write?

Si oui, vous ne pouvez certainement pas faire cela. document.write est exécuté dès qu'il est rencontré, ce qui sera pendant le chargement du document. Si vous voulez injecter une valeur dynamiquement, vous devrez utiliser une méthode DOM.

+0

ou utilisez .innerHTML comme lonut fait. (Notez que innerHTML ne fait partie d'aucune norme DOM) –

+0

"Je ne suis pas sûr de comprendre ce que vous voulez. Voulez-vous dire que la valeur de upDated, renvoyée via l'appel Ajax, doit être insérée dans le corps du document via document.write? " oui exactement cela. Je crois que je l'ai eu. - C'est mon vieux cerveau JS stupide .. :) besoin d'utiliser un insert DOM à la place. –

Questions connexes