2010-05-17 63 views
2

我正在學習Ajax。下面的代碼基本上接收來自PHP的回聲,然後將其放入元素ID games關於Ajax的問題​​

我的問題是,如果我想讓Ajax向3個不同的PHP腳本發送3個不同的HTTP請求,並且如果我想從每個腳本中檢索數據,然後將其放入3個不同的元素ID,那麼我會製作3個副本這個相同的功能?我會想象應該有一個更有效的方法。

function showHint(str) { 
    if (window.XMLHttpRequest) { 
     xmlhttp=new XMLHttpRequest(); 
    } else { 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

    xmlhttp.onreadystatechange=function() { 
     if (xmlhttp.readyState==4 && xmlhttp.status==200) { 
      document.getElementById("games").innerHTML=xmlhttp.responseText; 
     } 
    } 
    xmlhttp.open("GET","hw9.database.php?name="+str,true); 
    xmlhttp.send(); 
} 

回答

6

沒有必要那樣做。你只需要參數化該功能:

function showHint(elementid,url,str) { 

    if (window.XMLHttpRequest) { 
     xmlhttp=new XMLHttpRequest(); 
    } else { 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

    xmlhttp.onreadystatechange=function() { 
     if (xmlhttp.readyState==4 && xmlhttp.status==200) { 
      document.getElementById(elementid).innerHTML=xmlhttp.responseText; 
     } 
    } 
    xmlhttp.open("GET",url+str,true); 
    xmlhttp.send(); 
} 
+0

啊!我懂了!這將工作得很好! – Strawberry 2010-05-17 06:35:36

1

有。使用像jQueryPrototype之類的JavaScript框架或任何其他。它們都具有內置的Ajax功能,使您想要完成的任務變得更加輕鬆。

例jQuery的Ajax請求:

$('#games').load('hw9.database.php?name=' + str); 
+0

這並不完全回答我的問題,不要粗魯。 – Strawberry 2010-05-17 06:35:54

+0

事實上,他對解決方案的答案進行了改進。 – RandyMorris 2010-05-17 07:02:02