2008-09-04 5 views
2

J'ai vu des exemples simples de codes source Ajax dans de nombreux tutoriels en ligne. Ce que je veux savoir, c'est si l'utilisation du code source dans les exemples est parfaitement bien ou non?À quel point mon code Ajax devrait-il être sophistiqué?

Y a-t-il quelque chose de plus à ajouter au code qui va dans une application du monde réel? Quelles sont toutes les mesures à prendre pour rendre l'application plus robuste et plus sûre?

Voici un code source d'exemple que je suis sur le web:

function getChats() { 
    xmlHttp=GetXmlHttpObject(); 
    if (xmlHttp==null) { 
      return; 
    } 
    var url="getchat.php?latest="+latest; 
    xmlHttp.onreadystatechange=stateChanged; 
    xmlHttp.open("GET",url,true); 
    xmlHttp.send(null); 
} 

function GetXmlHttpObject() { 
    var xmlHttp=null; 
    try { 
      xmlHttp=new XMLHttpRequest(); 
    } catch (e) { 
      try { 
        xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); 
      } catch (e) { 
        xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
    } 
    return xmlHttp; 
} 

Répondre

3

Le code que vous avez publié manque d'un ingrédient important: la fonction stateChanged. Si vous ne comprenez pas vraiment le code que vous avez vous-même affiché, alors que l'appel à getchats.php est terminé, une fonction "stateChanged" est appelée et cette fonction sera responsable de la gestion de la réponse. Puisque le script que vous appelez et la fonction elle-même est préfixé par "obtient" alors je suis assez sûr que la réponse est quelque chose que vous allez être intéressé.

Ceci mis à part, il y a un certain nombre de façons de améliorer le code que vous avez publié. Je suppose que cela fonctionne en déclarant un seul objet "xmlHttp" et en le rendant disponible à chaque fonction (parce que si ce n'est pas le cas, la fonction stateChanged n'a aucun moyen d'obtenir la réponse). Ceci est correct jusqu'à ce que vous exécutiez une requête AJAX avant que le dernier (ou les derniers) n'aient pas encore répondu, auquel cas la référence d'objet est écrasée à la dernière demande à chaque fois.

De même, tout code AJAX digne de ce nom fournit une fonctionnalité pour les cas de réussite et d'échec (erreurs de serveur, page non trouvée, etc.) afin que le message approprié puisse être délivré à l'utilisateur.

Si vous voulez juste utiliser la fonctionnalité AJAX sur votre site Web, je vous dirigerais vers jQuery ou similarframework. MAIS si vous voulez vraiment comprendre la technologie et ce qui se passe dans les coulisses, je continuerais à faire ce que vous faites et vous poser des questions spécifiques lorsque vous essaierez de créer vous-même une petite classe AJAX légère. C'est ainsi que je l'ai fait, et bien que j'utilise le framework jQuery aujourd'hui, je suis toujours content de savoir comment ça marche dans les coulisses.

0

J'utiliser un cadre comme DOMAssistant qui a déjà fait le travail pour vous et sera plus robuste ainsi que l'ajout supplémentaire utile fonctionnalités. En dehors de cela, vous avez l'impression que le code ferait l'affaire.

0

Je vous recommande honnêtement d'utiliser l'une des nombreuses librairies disponibles pour Ajax. J'utilise prototype moi-même, tandis que d'autres préfèrent jQuery. J'aime le prototype parce que c'est plutôt minimal. Le Prototype Ajax tutorial l'explique bien. Cela vous permet également de gérer facilement les erreurs.

new Ajax.Request('/some_url', 
    { 
    method:'get', 
    onSuccess: function(transport){ 
     var response = transport.responseText || "no response text"; 
     alert("Success! \n\n" + response); 
    }, 
    onFailure: function(){ alert('Something went wrong...') } 
    }); 
Questions connexes