2011-01-12 6 views
0

avec cette fonctionAjax Double appel

<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> 

-je utiliser mon ajax. Mais dans la page que j'appelle 2 fois cette fonction:

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

Mais se trouve que seul d'entre eux fonctionne, si je retire un des autres œuvres. Qu'est-ce que je fais mal? Merci!

+0

Il est possible que le second appel à ajaxcall() écrase le premier appel. Essayez de lier ajaxcall() pour cliquer sur un bouton. Cette URL pourrait aider https://blueprints.dev.java.net/ajax-faq.html#concurrent_requests – Shahid

Répondre

0

Essayez de déclarer "var xmlhttp" lorsque l'exécution de la fonction commence.

+0

merci, votre méthode a fonctionné. Im un begginer en ajax donc je ne suis pas si bon à cela. merci ashwini, michael et shahid! – Lordareon

+0

wierd n'est-ce pas. Ce serait génial si vous pouviez en savoir plus sur les fermetures en javascript. Dat était le problème ici. – trelston

0

Il est probable qu'ajaxcall lève une erreur et provoque l'arrêt de l'exécution.

Exécutez-le via un débogueur et découvrez ce qui ne va pas (Firebird, Chrome Developer Tools, etc.).

0

La première fois que vous appelez la fonction ajaxcall, l'objet xmlhttp est créé et au moment où vous envoyez la requête, vous appelez la même fonction et l'objet est écrasé. C'est la raison pour laquelle une seule requête est en cours. Pour éviter cela, vous pouvez stocker les objets dans un tableau, puis les traiter.