2011-01-12 9 views
0

mit dieser FunktionAjax Double Call

<script type="text/javascript"> 
function ajaxcall(div, page) 
{ 
if (window.XMLHttpRequest) 
    {xmlhttp=new XMLHttpRequest();} 
else 
    { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } 
xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById(div).innerHTML=xmlhttp.responseText; 
    } 
    } 
xmlhttp.open("GET",page,true); 
xmlhttp.send(); 
} 
</script> 

ich meine Ajax verwenden. Aber in der Seite nenne ich 2 mal diese Funktion:

<script type="text/javascript">ajaxcall("menu", "perfil.php");</script> 
<script type="text/javascript">ajaxcall('mapadiv', "map2.php");</script> 

aber kommt vor, dass nur einer von ihnen arbeitet, wenn ich eine der anderen Werke entfernen. Was mache ich falsch? Vielen Dank!

+0

Es ist möglich, dass der zweite Aufruf von ajaxcall() den ersten Aufruf überschreibt. Versuchen Sie, ajaxcall() mit einem Klick auf eine Schaltfläche zu verbinden. Diese URL könnte https://blueprints.dev.java.net/ajax-faq.html#concurrent_requests – Shahid

Antwort

0

versuchen, "var xmlhttp" zu deklarieren, wenn die Ausführung der Funktion beginnt.

+0

danke helfen, Ihre Methode hat funktioniert. Ich bin ein Anfänger in Ajax, also bin ich nicht so gut darin. Danke Ashwini, Michael und Shahid! – Lordareon

+0

wierd ist es nicht. Es wäre großartig, wenn Sie mehr über Verschlüsse in Javascript erfahren könnten. Dat war das Problem hier. – trelston

0

Es ist wahrscheinlich, dass Ajaxcall einen Fehler auslöst und die Ausführung stoppt.

Führen Sie es durch einen Debugger und finden Sie heraus, was schief geht (Firebird, Chrome Developer Tools usw.).

0

Wenn Sie zum ersten Mal die Funktion ajaxcall aufrufen, wird das Objekt xmlhttp erstellt. Wenn Sie die Anfrage senden, rufen Sie die gleiche Funktion auf und das Objekt wird überschrieben. Das ist der Grund, warum nur eine Anfrage funktioniert. Um dies zu vermeiden, möchten Sie vielleicht die Objekte in einem Array speichern und dann verarbeiten.