使用AJAX将Javascript字符串发送到PHP文件,然后从文件返回数组

时间:2013-07-11 13:40:33

标签: php javascript ajax arrays json

我有一个弹出窗体,用于选择表格中的项目。按顺序,每行的表数据是:(选中复选框),模式名称和表名。

以下是用于获取数据列表的查询:

select table_schema, table_name
from information_schema.tables
order by table_schema, table_name

我如何创建表格列表:

<?php
   $db = new mssql($_SESSION['serv'],$_POST['database'],$_SESSION['usr_n'],$_SESSION['pa    ss']);

   $db->query("
      select table_name, table_schema
      from information_schema.tables
      order by table_schema, table_name
   ");

   $tables = $db->getArray();

   foreach($tables as $table)
   {
      print "<tr>";
      print "<td><input type='checkbox' name='$table[TABLE_NAME]' class='checkbox' /></td>"; //Print Checkbox
      print "<td style='padding: 5px; text-align: center;'>$table[TABLE_SCHEMA]</td>"; //Print Table Schema
      print "<td>$table[TABLE_NAME]</td>"; //Print Table Name
      print "<td><input type='hidden' name='$table[TABLE_NAME]_schema' value='$table[TABLE_SCHEMA]'></td>";
      print "</tr>";
   }
?>

我正在尝试添加过滤器。我想放置一个从上面的查询返回的所有不同模式的下拉列表。我使用以下方法完成了这项工作:

<option value="%" selected>All Schemas</option>
<?php
   $db = new mssql($_SESSION['serv'], $_POST['database'], $_SESSION['usr_n'],$_SESSION['pass']);
   $db->query("
      select distinct table_schema
      from information_schema.tables
      order by table_schema
   ");
   $schemas = $db->getArray();
   foreach($schemas as $schema) {
      ?>
         <option value="<?php echo $schema['TABLE_SCHEMA'];?>"><?php echo $schema['TABLE_SCHEMA']?></option>
      <?php
   }
?>

这是正常的,当我在Javascript中访问下拉列表时,我在显示警报时获得了正确的值。

我需要做的是当用户从列表中选择不同的模式(onchange)时,表将更新,仅显示具有指定模式的表。我一直在尝试使用我对Javascript和PHP的有限知识来解决这个问题,但在搜索了几个有些相关的问题后,我才明白我需要使用AJAX。我对它知之甚少,而且我没有在网上找到教程非常有帮助。

所以我目前所坚持的是将下拉值发送到PHP文件,获取一个数组,并将其返回给Javascript。然后我将从显示表中删除所有行,并从传入的数组中添加新值。

这是我到目前为止所得到的:

function updateList() {
   var sch = document.getElementById("schList");
   var xmlhttp;
   if(window.XMLHttpRequest) {
      xmlhttp=new XMLHttpRequest();
   } else {
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
   }
   xmlhttp.onreadystatechange=function() {
      if(xmlhttp.readyState==4 && xmlhttp.status==200) {
         var table = xmlhttp.response
      }
   }
}

从这里我不知道。我读过一些名为JSON的东西,你可以返回对象和数组。我如何将模式名称发送到文件,以及如何从文件返回数组?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

如果您不熟悉该主题,请不要尝试通过ajax执行此操作。只需使用url var重新加载页面即可告诉页面要加载的内容即。 table.php?ID =用户

如果没有ajax这一切都正常工作,你可以在必要的时候添加该功能。

如果您想知道重新加载的js,请参阅:http://webdesign.about.com/od/examples/l/blfaqddredirect.htm