2010-05-17 51 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