php - Ajax 搜索不工作而 XML 已经在运行?

标签 php ajax xml

我是 Ajax 的新手,我试过教程书,但没有用。该代码用于搜索。

这是脚本 search.htm

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>AJAX + MySQL I</title>
<script type="text/javascript" src="search.js"></script>
</head>

<body onload='process()'>

<h1>Student Search</h1>

<form name="form1">
Masukkan Nama Mahasiswa: <input type="text" id="namaMhs" />
</form>

<p><strong>Hasil Pencarian :</strong></p>

<div id="hasil" />

</body>
</html>

和 JS 脚本 search.js

var xmlHttp = createXmlHttpRequestObject();

function createXmlHttpRequestObject()
{
    var xmlHttp;
    if(window.ActiveXObject)
    {
       try
       {
          xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
       }
       catch (e)
       {
          xmlHttp = false;
       }
    }
else
{
    try
    {
       xmlHttp = new XMLHttpRequest();
    }
    catch (e)
    {
         xmlHttp = false;
    }
}

if (!xmlHttp) alert("Obyek XMLHttpRequest tidak dapat dibuat");
else
return xmlHttp;
}

function process()
{
    if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
    {
       nama = 
          encodeURIComponent(document.getElementById("namaMhs").value);
       xmlHttp.open("GET", "search.php?namaMhs=" + nama, true);
       xmlHttp.onreadystatechange = handleServerResponse;
       xmlHttp.send(null);
    }
    else
    setTimeout('process()', 1000);
}

function handleServerResponse()
{
    if (xmlHttp.readyState == 4)
    {
       if (xmlHttp.status == 200)
       {
          var xmlResponse = xmlHttp.responseXML;
              xmlRoot = xmlResponse.documentElement;

              nimArray = xmlRoot.getElementsByTagName("nim");
              namaMhsArray = xmlRoot.getElementsByTagName("namamhs");
          alamatArray = xmlRoot.getElementsByTagName("alamat");

          if (nimArray.length == 0)
          {
             html = "Data tidak ditemukan";
          }
          else
          {

  // membentuk tabel untuk menampilkan hasil pencarian

          html = "<table border='1'><tr><th>NIM</th><th>Nama 
                      Mhs</th><th>Alamat</th></tr>";

          for (var i=0; i<nimArray.length; i++)
          {
               html += "<tr><td>" + nimArray.item(i).firstChild.data +
                            "</td><td>" +
                          namaMhsArray.item(i).firstChild.data + 
                            "</td><td>" + 
                      alamatArray.item(i).firstChild.data + 
                            "</td></tr>";
          }
          html = html + "</table>";
          }

          document.getElementById("hasil").innerHTML = html;
              setTimeout('process()', 1000);
       }
       else
       {
          alert("Ada masalah dalam mengakses server: " +
          xmlHttp.statusText);
       }
    }
}

和 php 中的最后一个脚本 search.php

<?php
header('Content-Type: text/xml');
echo '<hasil>';
$namaMhs = $_GET['namaMhs'];
mysql_connect("localhost","root","*******");
mysql_select_db("mahasiswa");
$query = "SELECT * FROM mhs WHERE namamhs LIKE '%$namaMhs%'";
$hasil = mysql_query($query);
while ($data = mysql_fetch_array($hasil))
{
   echo "<mhs>";
   echo "<nim>".$data['NIM']."</nim>";
   echo "<namamhs>".$data['NAMAMHS']."</namamhs>";
   echo "<alamat>".$data['ALAMAT']."</alamat>";
   echo "</mhs>";
}
echo '</hasil>';
?>

请帮我修复这个脚本。 search.php 上的 XML 已经在运行,但我的搜索没有运行。感谢您的帮助。

最佳答案

在文本字段中甚至没有值之前,您正在加载时提交脚本:

<body onload='process()'>

<h1>Student Search</h1>

<form name="form1">
Masukkan Nama Mahasiswa: <input type="text" id="namaMhs" />
</form>

您应该像这样向文本字段添加一个值:

<input type="text" value="testname" id="namaMhs" />

或者作为更好的选择,添加一个提交按钮并且不在加载时运行函数,而是在提交时运行:

<body>
       <h1>Student Search</h1>

        <form name="form1">
        Masukkan Nama Mahasiswa: <input type="text" id="namaMhs" />
    <input type="button" value="Search" onclick="process();" />
        </form>

您的代码可能存在更多甚至更多问题,我没有仔细查看所有问题,但这应该能让您有个好的开始。

关于php - Ajax 搜索不工作而 XML 已经在运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21980851/

相关文章:

php case语句根据变量的值继续或中断

PHP - 首次登录页面

php和mysql插入输入数组

javascript - 按 T​​ab 键附加输入字段

jquery - 为什么第二个独立的ajax响应要等到第一个ajax响应才能获取?

java - IBM Integration Bus 未在 JavaCompute 节点中生成 xml 属性

java - Spring MVC XML View

jquery - 通过jquery检测ajax请求

javascript - MySQL 表更改的事件监听器?

c# - .net 和 .config 文件