我在調用2個單獨的ajax函數時遇到問題。我有一個循環遍歷頁面上的所有複選框元素,然後如果它們被檢查,它會調用一個ajax函數來移動數據庫中的一些數據。然後,在for循環之外,我調用另一個到我的數據庫的ajax函數,並將結果返回給我的ID元素。我必須以不同的方式命名我的httprequests,所以他們不打架,兩個函數都可以工作,但是我的循環之外的那個函數快速並且不會拉取新的/更改的數據。如果我在這個外部循環函數之前放置一個警報,它就會起作用。我也嘗試過使用setTimeout(myFunctio(),3000),但沒有運氣。Javascript,ajax計時問題
這是我的代碼。
function ungroupContact(){
group = document.getElementsByName("moveGroup")[0].value;
for(i=0;i<=25;i++){
if(document.getElementById('checkBox'+i)){
if(document.getElementById('checkBox'+i).checked){
var email = document.getElementById('checkBox'+i).value;
moveContact(email, group);
}
}
}
//alert("hello");
//setTimeout(alert("hello"),12000);
groupList1(group);
}
這是我第一次發帖,對不起,如果這是不好的,目前正在攻讀計算機科學學位。
感謝您的任何建議和/或幫助
對不起,我應該知道放了AJAX功能。我使用了w3schools的佈局。
function moveContact(email, group){
if (email=="" || group=="")
{
document.getElementById("sidebar2").innerHTML="Something wrong was entered";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp1=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp1=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp1.onreadystatechange=function()
{
if (xmlhttp1.readyState==1 || xmlhttp1.readyState==2 || xmlhttp1.readyState==3)
{
document.getElementById("sidebar2").innerHTML="<img src='images/loading.gif' alt='Loading'> ";
}
if (xmlhttp1.readyState==4 && xmlhttp1.status==200)
{
document.getElementById("sidebar2").innerHTML=xmlhttp1.responseText;
}
}
xmlhttp1.open("GET","core/moveContact.php?group="+group+"&email="+email,true);
xmlhttp1.send();
return;
}
這是因爲ajax請求的異步性質,您需要等到所有請求都完成才發送最後一次調用 –
您能分享'moveContact'方法 –