我是新來的ajax,做了一些教程併成功地管理了幾個ajax調用。 我現在正嘗試在一個頁面上創建對ajax對象的多個調用,並且無法使其工作。在一頁上的兩個Ajax調用只返回一個結果
我的目標是點擊一個用戶將觸發兩個ajax調用,每個調用都返回一個不同div的響應。
我確實管理過創建兩個這樣的調用,而Firebug顯示我們都返回了所需的ResponseText,但只有第二個實際顯示在頁面上。
這是我的基本AJAX功能:
function ajaxFunction()
{
try
{// Opera 8.0+, Firefox, Safari
myAjax = new XMLHttpRequest();
}
catch (e)
{// Internet Explorer Browsers
try
{
myAjax = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
myAjax = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{// Something went wrong
alert("browser too old");
return false;
}
}
}
}
這是激活AJAX功能:
function ajaxCaller(url, params, div)
{
ajaxFunction();
myAjax.open("POST",url,true);
myAjax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
myAjax.setRequestHeader("Content-length", params.length);
myAjax.setRequestHeader("Connection", "close");
myAjax.onreadystatechange=function()
{
if (myAjax.readyState==4 && myAjax.status==200)
{
document.getElementById(div).innerHTML=myAjax.responseText;
}
}
myAjax.send(params);
}
這是應該開火兩次調用一前一後的JS代碼:
var myDiv = "sons_of_" + type + id
var params = "id=" + id + "&type=" + type;
ajaxCaller ("places_proc.php",params,myDiv);
var params = "con=" + id;
ajaxCaller ("places_proc2.php",params,'ctryDiv');
正如我所說的,唯一的顯示響應是第二個實例ajaxCaller(切換兩個調用之間的順序,切換顯示的結果)。
我假設第二次調用的結果會覆蓋第一次調用的結果,但作爲新手,我不明白它發生的確切階段是什麼。
我很感激任何指針,我做錯了什麼。
(據我所知JQuery的或類似的可以在這裏幫我,但因爲我是新來的吧,我想先寫我自己,只有在後一階段依靠快捷鍵)
感謝名單。
這裏有一個小問題ajaxCaller(「places_proc.php」,params,myDiv); 您需要在單引號中編寫myDiv,如第二行所示:ajaxCaller(「places_proc.php」,params,'myDiv'); – wasimbhalli
感謝wasimbhalli,但myDiv是一個變量(我聲明它在ajaxCaller上方兩行),其中ctryDiv是一個常量,因此是單引號。 – einav