2011-04-07 4 views
0

Problèmes de fonctionnement du script ajax. L'utilisation de ce que la page html:Problème avec le fonctionnement d'AJAX

<html> 
    <head> 
     <script type="text/javascript" src="scripts\main.js"></script> 
     <link rel="stylesheet" type="text/css" href="css\mainStyle.css" /> 
    </head> 
    <body onload="onloadHandler();"> 
     <canvas id="canvas" style="background-color:#ddd"> 
      Sorry, your browser does not support the canvas element. 
     </canvas> 
    </body> 
</html> 

Le script:

function onloadHandler() 
{ 
    canvasItem = document.getElementById('canvas'); 

    canvasItem.addEventListener('mousedown', mousedownEventHandler, false); 
    canvasItem.addEventListener('mousemove', mousemoveEventHandler, false); 

    callService("http://www.xul.fr/somefile.xml"); 
    // callService("http://allcodecorner.com/index.html"); 
// callService("http://stackoverflow.com"); 
// callService("http://www.w3schools.com/ajax/ajax_info.txt"); 
    setTimeout("redraw()", 5); 
} 

function callService(serviceName) 
{ 
    var xmlhttp; 
    if(window.XMLHttpRequest) 
    { 
     xmlhttp = new XMLHttpRequest(); 

    } else { 
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xmlhttp.onreadystatechange=function() 
    { 
     if(xmlhttp.readyState == 0) 
     { 
      alert('not initialized'); 
     } else if (xmlhttp.readyState == 1) 
     { 
      alert('connection established'); 
     } else if (xmlhttp.readyState == 3) 
     { 
      alert('processing request'); 
     } else if (xmlhttp.readyState == 4) 
     { 
      alert('ready!'); 
     } 

     if(xmlhttp.readyState==4) 
     { 
      if(xmlhttp.status==200) 
      { 
       alert(xmlhttp.responseText); 
      } else { 
       alert('Failed: ' + xmlhttp.responseText + ", status: " + xmlhttp.status); 
      } 
     } 
    } 
    alert(serviceName); 
    xmlhttp.open("POST",serviceName,true); 
    xmlhttp.send(null); 
} 

Peu importe quelle adresse je mets, je reçois les messages
'Connexion établie'
'prêt'
'Echec:, statut: 0'.

J'ai essayé sur Firefox et Chrome, j'ai essayé de l'exécuter localement et hébergé, rien ne semble fonctionner. Je reçois toujours un readyState de 4 et le statut de 0.
Des idées? J'ai essayé de connecter plusieurs sites, la même chose à chaque fois.
Ont également essayé avec GET, en définissant quelques en-têtes, même résultat. Assez essayé tous les exemples que je pourrais trouver, sans la chance

+0

Oh mec, j'étais _sure_ Je l'ai essayé avec un fichier local. Juste ré-essayé alors, a bien fonctionné. Merci :). Chuck votre commentaire comme une réponse afin que je puisse le marquer – Rob

+1

fait! La solution de contournement habituelle est un proxy côté serveur qui récupère le contenu pour vous et le transmet à votre JS dans un contexte local. –

+1

Je pense que vous frappez la protection de plusieurs domaines. Vous ne pouvez pas utiliser XHR pour parler à d'autres domaines – Raynos

Répondre

2

Vous semblez essayer de faire une demande Ajax à un emplacement distant, ce qui est impossible en raison de la Same Origin Policy.

Vous ne savez pas s'il existe un correctif: Si vous contrôlez l'emplacement distant, vous pouvez le faire envoyer à la place JSONP. Si ce n'est pas possible, vous devrez utiliser un proxy côté serveur.

Questions connexes