javascript - 使用 AJAX 将数据库记录加载到表中?

标签 javascript php ajax html-table

我得到了一个使用ajax修改网站上数据库记录的代码。

我有正确查询数据的功能,但显示的表没有获取其中显示的任何记录。我有下面的函数代码和 html。

请查看当前版本的链接:http://www.eng.nene.ac.uk/~10406206/CSY2028/Ajax/Ajax.html

带有回调的loadrecords函数不确定为什么使用回调

<script language="Javascript">

var xmlHttpReq = false;
var xmlHttpReq2 = false;
var xmlHttpReq3 = false;

function loadDatabaseRecordsCallback () 
{
    if (xmlHttpReq.readyState == 4) 
{            
   alert ("From Server (Load Records):List.php" + xmlHttpReq.responseText);

    var record = xmlHttpReq.responseXML.getElementsByTagName('record');
    var s = "";
    for (var i = 0; i < record.length; i ++)
    {
    var rec = record[i];

    var id = rec.getElementsByTagName("ID")[0].firstChild.data;
    var carname = rec.getElementsByTagName("CARNAME")[0].firstChild.data;
    var fueltype = rec.getElementsByTagName("FUELTYPE")[0].firstChild.data;
    var transmission = rec.getElementsByTagName("TRANSMISSION")[0].firstChild.data;
    var enginesize = rec.getElementsByTagName("ENGINESIZE")[0].firstChild.data;
    var doors = rec.getElementsByTagName("DOORS")[0].firstChild.data;
    var total = rec.getElementsByTagName("TOTAL")[0].firstChild.data;
    var available = rec.getElementsByTagName("AVAILABLE")[0].firstChild.data;
    appendRecord (id, carname, fueltype, transmission, enginesize, doors, total, available);
    }
}
}

function loadDatabaseRecords () 
{
    // Mozilla/Safari
    if (window.XMLHttpRequest) 
    {
        xmlHttpReq = new XMLHttpRequest();
    }
    // IE
    else if (window.ActiveXObject) 
    {
        xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
    }

    alert ("To Server (Load Records): List.php");

    xmlHttpReq.open('GET', "List.php", true);
xmlHttpReq.onreadystatechange = loadDatabaseRecordsCallback; 
xmlHttpReq.send(null);
}

与该函数在同一页面上的是下面的表格

<body>
  <form name="f1">
    <input value="Load Database" type="button" onclick='JavaScript:loadDatabaseRecords()'></p>
  </form>
  <table id="DBTable"  border="2">
    <tr>
      <td width="20">ID</td>
      <td width="100">Car Name</td>
      <td width="100">Fuel Type</td>
      <td width="100">Transmission</td>
      <td width="80">Engine size</td>
      <td width="20">Doors</td>
      <td width="20">Total</td>
      <td width="20">Available</td>
     </tr>
     <form name="myform">
     <tr>
      <td><input type="text" name="id"></td>
      <td><input type="text" name="carname"></td>
      <td><input type="text" name="fueltype"></td>
      <td><input type="text" name="transmission"></td>
      <td><input type="text" name="enginesize"></td>
      <td><input type="text" name="doors"></td>
      <td><input type="text" name="total"></td>
      <td><input type="text" name="available"></td>
      <td colspan="2"><input type="button" value="add" onClick="JavaScript:addNewRecord()"></td>
<td colspan="2"><input type="checkbox" value="update" onClick="JavaScript:updateRecord()"></td>
<td colspan="2"><input type="checkbox" value="delete" onClick="JavaScript:deleteRecord()"></td>
     </tr>
     </form>
  </table>
</body>

该函数调用List.php,其代码如下

<?php
  $link = mysql_connect ("194.81.104.22", "********", "*****");
  mysql_select_db ("*******");

  $query = "SELECT * from XYZ";
  $result = mysql_query ($query);


 for ($i = 0; $i < mysql_num_rows ($result); $i ++)
  {        
    $row = mysql_fetch_object ($result);
    print "<b>Car Name:</b> <i>$row->CARNAME</i><br>";
    print "<b>Fuel Type:</b> <i>$row->FUELTYPE</i><br>";
    print "<b>Transmission:</b> <i>$row->TRANSMISSION</i><br>";
    print "<b>Total:</b> <i>$row->TOTAL</i><br>";
    print "<b>Available:</b> <i>$row->AVAILABLE</i><br><br>";
  }

  mysql_close ($link);
?>

因此,如果您看过该网站,您会看到按下加载数据库按钮,然后会出现一个包含所有数据库条目的框。但是,一旦按下 Enter 键,页面上的表格将保持为空。

我的问题是为什么? 你能向我解释一下问题出在哪里吗?

Ajax 新手,如果我违反了帖子规则,我深表歉意,这是我的第一个帖子。

最佳答案

我对php不太清楚,但我记得我的asp + ajax经验:

您将数据带回浏览器,但您应该“重新绘制”页面 - 您可以在 JavaScript 中执行此操作,或者 PHP 可能对此有一些现成的解决方案。

当您验证方法appendRecord接收有效值时 - 使用javascript按id查找表(DBTable),并按记录更新行/列的值。

我建议您看看http://www.w3schools.com/php/php_ajax_database.asp

关于javascript - 使用 AJAX 将数据库记录加载到表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15690139/

相关文章:

php - 未捕获的异常 'ErrorException',消息为“错误的 SQL : INSERT INTO”

php - PHP 中的多线程

javascript - document.form.field.value 在 Linux 机器中没有给出值

javascript - 从纯javascript到prototypejs

javascript - FB JS-SDK无法检测用户直接退出FB

javascript - 将 json 对象数组转换为另一个 json 对象

javascript - GWT:是否可以使用 GWT 启动项目,然后最终迁移到完整的 javascript?

php - 如果 isset $_POST

javascript - 使用 ASP.NET MVC 项目运行脚本

javascript - AngularJS $http 服务中的 encodeURIComponent