我正在学习AJAX,我遇到了这个错误,其中没有显示MySQL查询的结果。
以下代码段是javascript:
<script type="text/javascript">
function showCustomers()
{
var zip = document.getElementById('zipcode').value;
var st = document.getElementById('stname').value;
if ((zip=="")&&(st=="")){
document.getElementById("showCustResults").innerHTML="";
return;
}
mlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200){
document.getElementById("showCustResults").innerHTML=xmlhttp.responseText;
}
}
var querystring = "?zip" + zip + "&st" + st ;
xmlhttp.open("POST","findCustomers.php" + querystring, true);
xmlhttp.send();
}
以下是从中提取信息的表格:
<form id="search_customers" class="appnitro" method="post" action="">
<ul>
<li id="li_2" >
<label class="description" for="zipcode">Zip Code </label>
<div><input id="zipcode" name="zip_code" class="element text small" type="text" maxlength="10" value=""/> </div>
<p class="guidelines" id="guide_2"><small>Please enter a Zip Code</small></p>
</li>
<li id="li_1" >
<label class="description" for="stname">Street Name </label>
<div><input id="stname" name="st_name" class="element text medium" type="text" maxlength="50" value=""/></div>
<p class="guidelines" id="guide_1"><small>Please Enter the Street Name</small></p>
</li>
<li class="buttons">
<input id="findCust" class="button_text" onclick="showCustomers()" type="submit" name="find"/>
</li>
</ul>
</form>
<div id="showCustResults"><!-- Eventually search results will appear here --></div>
正在拉鳕鱼的PHP如下:
<?php
include 'functions.php'; #Library that holds all the functions
#Sanitizing strings for SQL entry
$zip = mysqli_real_escape_string($db, $_POST['zip']);
$st = mysqli_real_escape_string($db, $_POST['st']);
$db = db_connect(); #Connecting to the database
#Querying the database to find any matches
#ALSO: We might need to add another column to
$sql = "SELECT CustomerName, ServiceAddress, BillingAddress FROM enrollment_users WHERE UserName = '$username' AND Password = '$password'";
$res = mysqli_query($db, $sql);
#Creating the table to shoot out the information
#First the header...
echo "<table border='1'>";
echo " <tr>";
echo " <th>Customer</th>";
echo " <th>Address 1</th>";
echo " <th>Address 2</th>";
echo " <th>Status</th>";
echo " </tr>";
#Now the actualy information
while($row = mysqli_fetch_assoc($res)){
echo " <tr>";
echo " <td>" . $row['CustomerName'] . "</td>";
echo " <td>" . $row['ServiceAddress'] . "</td>";
echo " <td>" . $row['BillingAddress'] . "</td>";
echo " <td></td>";
}
echo"</table>";
db_close($db); #Closing the database
&GT;
我一直试图在过去的一天解决这个问题但没有用。希望有人能看到我不能做到的事情。
非常感谢。
答案 0 :(得分:2)
要发送帖子数据,你必须把它放在发送方法而不是网址,它们必须是key=value
对,你还应该用encodeURIComponent
对它们进行编码,你也必须设置内容类型为application/x-www-form-urlencoded
var querystring = "zip=" + encodeURIComponent(zip) + "&st=" + encodeURIComponent(phone) ;
xmlhttp.open("POST","findCustomers.php" , true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send(querystring);
答案 1 :(得分:-3)
mlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange=function()
我没有尝试运行您的代码,但乍一看,您似乎有一个拼写错误声明您的xmlhttp变量。
var querystring =“?zip”+ zip +“&amp; st”+ phone;
我也看到你的查询字符串似乎不正确。 AJAX代表异步javascript和xml(现在最常用JSON替换) 您应该在键和值对之间使用:格式化查询字符串。 http://www.json.org/
我不能确定这些会解决您的问题,因为我没有尝试过代码,但我会给出几点建议。
如果这实际上是问题,那会告诉我一些事情。 1.您不使用浏览器开发人员工具,因为如果您这样做,您会看到如果该变量不正确,则不会触发httprequest。 2.您正在使用文本编辑器而不是IDE进行开发。 (这是优先的我只是说这是观察而不是必然的推荐)
我不知道这项工作的目的是什么,但是我假设您不允许使用jquery,因为$ .ajax方法将允许您清理此代码并在更少的行中完成您想要的内容。