2008-08-29 5 views
4

Ich habe eine kleine JS-Funktion, die Ajax für mich tut und eine andere wie es, die POST-Daten zu der Anfrage hinzufügen. Da Ajax bei so vielen Bibliotheken ein so großes Thema ist, was fehlt mir an meiner Funktion, ist es unsicher oder etwas anderes beunruhigend?Was mehr für Ajax als diese Funktion benötigt wird

function loadPage(pagePath, displayElement) 
{ 
    var xmlHttp; 

    try 
    { 
     // Firefox, Opera 8.0+, Safari 
     xmlHttp=new XMLHttpRequest(); 
    } 
    catch (e) 
    { 
     // Internet Explorer 
     try 
     { 
      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); 
     } 
     catch (e) 
     { 
      try 
      { 
       xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
      catch (e) 
      { 
       alert("Your browser does not support AJAX!"); 
       return false; 
      } 
     } 
    } 

    xmlHttp.onreadystatechange=function() 
    { 
     if(xmlHttp.readyState==4) 
     { 
      document.getElementById(displayElement).innerHTML = xmlHttp.responseText; 
     } 
    } 

    xmlHttp.open("GET", pagePath, true); 
    xmlHttp.send(null); 
} 

Antwort

12

Ich empfehle dringend, dass Sie Ihren eigenen Ajax-Code nicht rollen. Verwenden Sie stattdessen ein Framework wie Prototype, Dojo oder eines der anderen. Sie haben sich darum gekümmert, alle ReadyStates zu bearbeiten, die Sie nicht bearbeiten (2 bedeutet, dass sie gesendet wurden, 3 bedeutet, dass sie bearbeitet werden usw.), und sie sollten der Antwort entgehen, die Sie möglicherweise nicht unsicher einfügen Javascript oder etwas in Ihre Seite.

Eine andere Sache, die Ihnen ein robusteres Framework bietet, ist die Möglichkeit, mehr als nur innerHTML zu verwenden, um Elemente im DOM zu ersetzen. Ihre Funktion hier kann nur verwendet werden, um ein Element durch die Antwort des Ajax-Aufrufs zu ersetzen. Es gibt viel mehr, was Sie mit Ajax tun können.

6

Ich würde diese Zeile entfernen.

alert("Your browser does not support AJAX!") 

Das Schreien beim Benutzer in einer Sprache, die er wahrscheinlich nicht versteht, ist schlimmer als ein Fehler. :-)

1

jQuery ist wahrscheinlich eine der leichtesten bekannten Bibliotheken überhaupt.

3

Ich habe noch nie ein Fan von verschachtelten try/catch-Blöcke gewesen, so würde ich es tun so etwas wie:

var xmlHttp; 
if (window.XMLHttpRequest) { 
    // Firefox, Opera 8.0+, Safari 
    xmlHttp=new XMLHttpRequest(); 
} else if (window.ActiveXObject) { 
    try { 
    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); 
    } catch (e) { 
    xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
} 

if (xmlHttp) { 
    // No errors, do whatever you need. 
} 

ich denke, dass wird funktionieren. Aber wie bereits erwähnt - warum erfinden Sie das Rad neu, benutzen Sie eine Bibliothek. Noch besser - finde heraus, wie sie es machen.

0

Wenn Sie wirklich wollen, um zu sehen, was Sie vermissen, lesen Sie die jQuery oder Prototype-Quellcode für ihre Ajax-Routinen. Wenn sich in den Kommentaren Bugnummern befinden, schauen Sie auch nach.

Verwandte Themen