使用 Ajax 从数据库获取数据
Using Ajax to bring data from database
我正在寻找的基本上是一种使用 ajax
从数据库获取数据的方法。
每次人们将mouseover
类别名称时,我希望此类别的数据在div中弹出。
由于某种原因,while 循环什么都不做。
这是我第一次使用ajax,而且我在php
也不是那么专业。
function showCat(str) {
if (str == "") {
document.getElementById("txtHint").innerHTML = "";
return;
} else {
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 && xmlhttp.status == 200) {
document.getElementById("txtHint").innerHTML = xmlhttp.responseText;
}
};
xmlhttp.open("GET","getcat.php?q="+str,true);
xmlhttp.send();
}
}
<?php
$q = intval($_GET['q']);
$con = mysqli_connect('localhost','ipattcoi','6#uP!AR3G_','patt_db');
if (!$con) {
die('Could not connect: ' . mysqli_error($con));
}
mysqli_select_db($con,"patt_db");
$sql="SELECT * FROM products WHERE category = '".$q."'";
$result = mysqli_query($con,$sql);
echo "<table>
<tr>
<th>Firstname</th>
<th>Lastname</th>
<th>Age</th>
<th>Hometown</th>
<th>Job</th>
</tr>";
while($row = mysqli_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['product_id'] . "</td>";
echo "<td>" . $row['product_name'] . "</td>";
echo "<td>" . $row['product_pic'] . "</td>";
echo "<td>" . $row['category'] . "</td>";
echo "</tr>";
}
echo "</table>";
mysqli_close($con);
?>
我假设"txtHint"是您希望通过AJAX请求显示类别详细信息的div。
确保您的 select 语句检索类别的值。 如果它不存在任何记录,则 while 循环不执行任何操作。
一个。 查询区分大小写。 $q可能提供类别为"三星",但在您的数据库中它存储为"三星",反之亦然。 通过将 sql 中的比较转换为大写或小写来解决此问题。b. 检查数据库中是否已存在$q值。 通过添加或删除网页或数据库中类别列表中的项目来解决此问题。
这与问题无关 - 表标题与数据库中的列不匹配。
您的代码有效,我能够以最少的修改复制并运行它(只是为了重用我现有的表),因此请检查以下内容:
1)检查表中是否有数据,使用任何mysql客户端(命令行工具,phpmyamdin等)
2)直接调用你的getcat.php
脚本,看看它是否真的返回表(如 http://my.server.name/getcat.php?q=something'),只需在浏览器中打开这样的URL
3)如果上述工作 - 打开执行ajax请求的HTML页面,打开开发人员工具(chrome和Firefox中的F12),找到"控制台",您可以在其中看到js错误。触发请求并检查错误。
除此之外,我希望您的代码只是出于某种学习目的,而不是用于实时应用程序/网站。因为您创作$sql
字符串的方式非常危险,因此请参阅示例。
在实际应用程序中,我还会做其他不同的事情:
- 在客户端 - 使用 jQuery 或其他库来执行 AJAX 请求,虽然
XMLHttpRequest
是一种有效的请求方式,但您可能会发现在实际应用程序中,您必须编写更多代码来处理不同的浏览器和不同的用例。 - 在服务器上 - 读取数据并将其转换为 JSON,将 JSON 发送到客户端并将其格式化/插入到客户端。同样,有一些库可以帮助您。目前不好的是你在php代码中有一部分html
- 同样对于真正的应用程序,我会在 php 端使用一些框架(Yii、Laravel 等)
- Ajax-如何获取数据
- 从键值结构中获取数据,并将其与AngularJS中ng重复的值进行比较
- 从数据库中获取数据并插入JavaScript变量
- 从单击的行上的列中获取数据
- Solr查询以按日期月份获取数据&年
- React路由器服务器端渲染和ajax获取数据
- 使用JavaScript在IE9中获取数据列表选项
- 从json子数组获取数据
- 使用angularjs中的rest调用通过id获取数据
- 正在从ruby应用程序中的数据库中获取数据
- 如何从servlet获取数据到ajax成功
- 从选择下拉菜单中获取数据
- 异步获取数据使用JavaScript同步获取数据
- 从服务器获取数据并在选择控件中使用ng选项无法显示选项
- 如何在Angular.js中循环动态添加Fields并获取数据并将其发送到服务器
- JavaScript-获取数据属性的值返回未定义的值
- 如何从文本区域获取数据并使用javascript进行解密
- 在put方法之前从作用域获取数据
- 事件循环的MEAN.JS setInterval进程(从另一个服务器获取数据)
- 使用ReactJS和Flux架构从服务器获取数据的正确方法是什么