Je suis complètement nouveau au monde JavaScript et Ajax, mais j'essaie d'apprendre.
En ce moment, je teste le XMLHTTPQUEST et je ne peux pas faire de travail même l'exemple le plus simple. C'est le code que j'essaie d'exécuter p> et je reçois toujours l'alerte avec le statut 0. J'ai lu des tonnes de webs à ce sujet et je ne le fais pas Sachez ce que je manque. J'apprécierai toute aide, merci! P> p>
3 Réponses :
Vous rencontrez dans le Même stratégie d'origine .
sauf si votre code est en cours d'exécution sur www.google.com (qui est peu probable), cela va à l'erreur. P>
aussi, et bien que cela ne vous cause pas de problème pour le moment, C'est une mauvaise pratique et peut conduire à des conditions de course, vous utilisez des globaux partout. p>
Faire la variable XHR locale à la fonction P>
if (this.readyState == 4 && this.status == 200){ // etc etc
Suivant de La réponse de David :
Vous devez utiliser un chemin relatif pour rester dans la même politique d'origine. Sinon, la plupart des navigateurs renvoient simplement un indemnérement comme une solution de contournement possible, vous pouvez configurer un très simple inversé proxy (avec mod_proxy Si vous utilisez Apache). Cela vous permettrait d'utiliser des chemins relatifs dans votre demande AJAX, tandis que le serveur HTTP agirait de proxy à n'importe quel emplacement "à distance". P> La directive sur la configuration fondamentale pour configurer un proxy inverse dans mod_proxy est le Dans ce cas, le navigateur demanderait vide code> et
Status == 0 code>. P>
proxypass code>. Vous l'utiliseriez généralement comme suit: p>
/ ajax / rechercher? Q = pile + débordement code> mais Le serveur servirait cela en agissant en tant que proxy à
http://google.com/search?q=stack+overflow code>. p> p>
Outre le même problème de politique d'origine, votre Qu'est-ce que votre code est cochez le Idéalement, vous devez déplacer l'alerte alerte code> est dans un endroit illogique. Lorsque vous utilisez XMLHTTPQUESTREQUEST, la fonction attribuée à
xhr.onreadystatechange code> sera appelée chaque fois que
préredyStat code> changements.
ReadyStat code> doit changer (en théorie) à partir de 0 (initialisé) à 1 (envoyé) à 2 (chargement) à 3 (interactif) à 4 (fini). P>
ReadyStat code> et voyez si la demande est terminée (
si (xhr.readytstate == 4) code>), et sinon,
alerte code> le code d'état HTTP . Étant donné que la demande n'a pas encore été envoyée (ou vient d'être envoyée), il ne devrait pas y avoir de statut HTTP. P>
code> à l'intérieur du bloc
si code> bloque, il vous permet de savoir quand il se termine. P>