我是新来的,所以我希望这是有道理的。我是 PHP 和 Ajax 的新手……所以我很迷茫。
我有一个 MySQL 数据库设置,以及几个用 PHP 创建的表单。我在其中一个表单上有几个文本字段,应该显示客户信息。第一个文本(电话号码)字段应该是一个搜索字段......所以一旦用户完成输入电话号码,我需要查询我的数据库,以查找记录并填充其余字段。
我已经尝试了各种方法来做到这一点......但没有什么是完全正确的!似乎最有希望的方法是使用 Onblur 事件调用将执行搜索的 php 页面(使用 Ajax)。
这行得通,因为我可以查询数据库以查找结果..并将它们显示回来。问题是这个包含数据的页面实际上显示在我的第一页的中间......所以基本上我有一个网页显示在另一个里面......这显然不是我想要的。
我的基本代码是:
HTML 方面——
<script>
function showUser(str) {
if (str == "") {
document.getElementById("divider").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) {
document.getElementById("divider").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET", "GetCustomer.php?q="+str, true);
xmlhttp.send();
}
</script>
</head>
<label for="CustPhone">Phone:</label>
<input type="text" name="CustPhone" id="CustPhone" tabindex="1" onchange="showUser(this.value)" value="<?php ?>">
<br>
<div id="divider"></div>
<label for="CustLastName">Last Name:</label>
<input type="text" name="CustLastName" id="CustLastName" tabindex="2" value="<?php echo $clast; ?>">
<label for="CustFirstName">First Name:</label>
<input type="text" name="CustFirstName" id="CustFirstName" tabindex="3" value="<?php echo $cfirst; ?>">
<p> </p>
<label for="CustAddress1">Address 1:</label>
<input type="text" name="CustAddress1" id="CustAddress1" tabindex="4" value="<?php echo $caddr1; ?>">
<label for="CustAddress2">Address2:</label>
<input type="text" name="CustAddress2" id="CustAddress2" tabindex="5" value="<?php echo $caddr2; ?>">
<p> </p>
和 PHP——
include ("AddEdit.php");
require_once("customer_info.php");
function LoadData()
{
$pn = $_POST['CustPhone'];
if (strlen($Pn) < 10)
{
$query = "SELECT * FROM customer WHERE Phone='$Pn'";
$result = mysql_query($query);
if (!$result) die ("Database access failed: " . mysql_error());
$rows = mysql_num_rows($result);
$rowinfo = mysql_fetch_array($result);
if ($rows > 0)
{
$clast = $rowinfo['LastName'];
$cfirst = $rowinfo['FirstName'];
$caddr1 = $rowinfo['Address1'];
$caddr2 = $rowinfo['Address2'];
$ccity = $rowinfo['City'];
$cprov = $rowinfo['Province'];
$cpostal = $rowinfo['Postal'];
}
}
}
关于如何在不跳动的情况下做到这一点的任何想法......或者更重要的是只在现有页面上显示数据,而不是在页面内显示整个页面的较小版本?
谢谢!!!