我可以在一个脚本中使用多个函数吗?

时间:2011-12-27 16:00:28

标签: php ajax

我正在尝试使用Ajax,PHP和MySQL一起制作表单元素,下拉样式选择输入能够选择一个选项并让ajax通过脚本将数据发送到数据库并返回到页面到一个单独的div。我已经找到了大部分代码。我现在的问题是这个。

我有三个下拉菜单,1希望转到此脚本。然后它将转到三个不同的$ GET脚本,具体取决于从中选择的菜单。

<script type="text/javascript">
function showUser(str)
{ 
if (str=="")
  { document.getElementById("txtHint").innerHTML="";
  return; }
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest(); }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }
  xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("txtHint").innerHTML=xmlhttp.responseText; }
  }
xmlhttp.open("GET","getuser.php?q="+str,true);
xmlhttp.send(); }
</script>

我拥有的三个选择元素都伴随着onchange函数。

<select name="characters" onchange="showCharacter(this.value)">
<select name="towers" onchange="showTowers(this.value)">
<select name="enemies" onchange="showEnemies(this.value)">

我对此脚本的PHP代码如下:

<?php

include("dbinfo.inc.php");

mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
mysql_select_db("db1801445-main", $con);
$sql="SELECT * FROM user WHERE id = '".$q."'";
$result = mysql_query($sql);
$q=$_GET["q"];

echo "<table border='1'>
    <tr>
    <th>Name</th>
    <th>Description</th>
    </tr>";
while($row = mysql_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['Name'] . "</td>";
  echo "<td>" . $row['Description'] . "</td>";
  echo "</tr>";
  }
echo "</table>";

mysql_close($con);
?> 

Idk如何做到这一点,你们可以帮帮我吗?

1 个答案:

答案 0 :(得分:1)

我同意使用jQuery可以让您的生活更轻松,但要解决您的问题:

您可以使JS代码更通用,以便更容易重用:

<script type="text/javascript">
function doAjax(ajaxFunction, str)
{ 
if (str=="")
  { document.getElementById("txtHint").innerHTML="";
  return; }
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest(); }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }
  xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("txtHint").innerHTML=xmlhttp.responseText; }
  }
xmlhttp.open("GET","getuser.php?q="+str+"func="+ajaxFunction,true);
xmlhttp.send(); }
</script>

然后改变你PHP做到这一点:

<?php
$sFunction  = $_GET["func"];
$sQ =$_GET["q"];

switch($sFunction){

    case 'showUser':
       //code here;
    break;
    case 'showTowers':
       //code here;
    break;
   case 'showEnemies':
       //code here;
    break;
    case 'showCharacters':
       //code here;
    break;
}

&GT;

回到前端:

<select name="characters" onchange="doAjax('showCharacter',this.value)">
<select name="towers" onchange="doAjax('showTowers',this.value)">
<select name="enemies" onchange="doAjax('showEnemies',this.value)">