2009-03-23 5 views
3

J'ai essayé d'obtenir une URL pour ouvrir mais je suis fâché de savoir pourquoi cela n'a pas fonctionné. Le code est répertorié et expliqué ci-dessous. Toute aide sera très appréciée.xmlHTTPrequest ne s'ouvre pas ("GET", url, true); Je suis fâché! PHP

L'objet:

function getXMLHTTPRequest() { 
    var req = false; 
    try { 
     /* for Firefox */ 
     req = new XMLHttpRequest(); 
    } catch (err) { 
     try { 
     /* for some versions of IE */ 
     req = new ActiveXObject("Msxml2.XMLHTTP"); 
     } catch (err) { 
     try { 
      /* for some other versions of IE */ 
      req = new ActiveXObject("Microsoft.XMLHTTP"); 
     } catch (err) { 
      req = false; 
     } 
    } 
    } 

    return req; 
} 

L'objet est appelé comme ceci:

<script type="text/javascript"> 
var myDelete = new getXMLHTTPRequest(); 
</script> 

Maintenant, voici ce que je veux faire:

function removeArticle(id) { 

    if (myDelete) { 

     try { 
      var deletUrl = "delete.php"; 
      var query = deletUrl + "?theid=" + id; 
      myDelete.open("GET", query, true); 
      myDelete.onreadystatechange = removeArticleResponse; 
      myDelete.send(null); 
     } catch (e) { 
      alert ("Unable to connect to the server:\n" + e.toString()); 
     } 
    } else { 
     alert ("Bad! Very BAD!"); 
    } 
} 

Quand je fais cela:

 if (myDelete.open("GET", query, true)) { 
     myDelete.onreadystatechange = removeArticleResponse; 
     myDelete.send(null); 
     } else { 
      alert ("No road!"); 
     } 

L'alerte ("Pas de route!"); me montre que le code n'exécute pas passé ce point:

if (myDelete.open("GET", query, true)) { 

Cela signifie que si les (myDelete) {œuvres. Le code passe cette étape et s'arrête pour une raison quelconque ici: myDelete.open ("GET", query, true); Il n'ouvrira pas l'URL. Je ne suis pas sûr du problème.

Edit: est ici la fonction utilisée pour accéder à la réponse du serveur:

function removeArticleResponse() { 
    if (myDelete.status == 4) { 
     if (myDelete.status == 200) { 
         try { 
          response = myDelete.responseText; 
          document.getElementById('displaynewsletterarticleresult').innerHTML = response; 
         } catch(e) { 
          alert("An error occured while reading the response:" + e.toString()); 
         } 
     } else { 
     alert ("An error occured when attempting to retrieve the data:\n" + myDelete.statusText); 
     } 
    } 
} 
+0

Y at-il une raison que vous utilisez des objets XMLHttpRequest directement au lieu d'une des bibliothèques qui font abstraction de la plomberie de vous (comme jQuery)? Je ne veux pas faire d'hypothèses, mais si vous n'êtes pas au courant, ils vous épargnent beaucoup de tracas w/ajax (et le code JS en général) – Rich

+0

Même charger jQuery juste pour obtenir un bon appel Ajax est beaucoup de aérien. – staticsan

Répondre

2

Dans votre fonction de réponse, voulez-vous vérifier .status == 4 au lieu de .readyState?

+0

Merci! C'était ça. J'ai maintenant une réponse. C'était une erreur à tête d'os. – clientbucket

3

Selon this, XMLHttpRequest.open() n'a pas de valeur de retour, de sorte que votre chèque sera toujours échouer.

+0

Merci pour le lien. Mais cela signifie que je suis de retour à la case départ, ne sachant pas quel est le problème en premier lieu. Je n'obtiens pas de réponse du script auquel j'envoie les paramètres. Pas de message d'erreur, rien. Je sais que le code d'identification a été adopté, mais après je ne suis pas sûr de ce qui s'est passé. Des idées? Merci beaucoup! – clientbucket

+0

J'ai modifié la question pour afficher la fonction utilisée pour accéder à la réponse du serveur. – clientbucket

+0

Peut-être que l'utilisation d'un débogueur comme firebug pour essayer de comprendre ce qui se passe serait utile? Ou juste mettre des déclarations d'alerte partout afin que vous puissiez suivre la logique –

Questions connexes