Javascript 使用Ajax从数据库中获取数据
基本上,我要寻找的是一种使用Javascript 使用Ajax从数据库中获取数据,javascript,php,html,ajax,Javascript,Php,Html,Ajax,基本上,我要寻找的是一种使用ajax从数据库获取数据的方法 每次有人把鼠标放在类别名称上方时,我都希望该类别的数据弹出到一个div中 由于某些原因,while循环什么也不做 这是我第一次使用ajax,而且我在php方面也不是那么专业 函数showCat(str){ 如果(str==“”){ document.getElementById(“txtHint”).innerHTML=“”; 返回; }否则{ if(window.XMLHttpRequest){ //IE7+、Firefox、Chro
ajax
从数据库获取数据的方法
每次有人把鼠标放在
类别名称上方时,我都希望该类别的数据弹出到一个div中
由于某些原因,while循环什么也不做
这是我第一次使用ajax,而且我在php
方面也不是那么专业
函数showCat(str){
如果(str==“”){
document.getElementById(“txtHint”).innerHTML=“”;
返回;
}否则{
if(window.XMLHttpRequest){
//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}否则{
//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=函数(){
if(xmlhttp.readyState==4&&xmlhttp.status==200){
document.getElementById(“txtHint”).innerHTML=xmlhttp.responseText;
}
};
open(“GET”、“getcat.php?q=“+str,true”);
xmlhttp.send();
}
}
您的代码可以正常工作,我可以复制并运行它,只需很少的修改(只是为了重新使用我现有的表),因此请检查以下内容: 1) 检查表中是否有数据,使用任何mysql客户端(命令行工具、phpmyamdin等) 2) 直接调用
getcat.php
脚本,看看它是否真的返回了表(如“”),只需在浏览器中像这样打开URL即可
3) 如果上述方法有效——打开您的HTML页面,打开ajax请求,打开开发者工具(chrome和firefox中的F12),找到“控制台”,在那里您可以看到js错误。触发请求并检查错误
除此之外,我希望您的代码只是为了一些学习目的,而不是用于实时应用程序/网站。因为编写$sql
字符串的方式非常危险,请参见示例
在实际应用程序中,我还可以做其他一些不同的事情:
- 在客户端-使用jquery或其他库来执行ajax请求,而
是执行请求的有效方法,您可能会发现在实际应用程序中,您必须编写更多代码来处理不同的浏览器和不同的用例XMLHttpRequest
- 在服务器上-读取数据并将其转换为json,将json发送到客户端并格式化/插入。还有一些库可以帮助您实现这一点。目前不好的是,php代码中有一部分html
- 对于一个真正的应用程序,我会在php端使用一些框架(Yii、Laravel等)
getcat.php
脚本,看看它是否真的返回了表(如“”),只需在浏览器中像这样打开URL即可
3) 如果上述方法有效——打开您的HTML页面,打开ajax请求,打开开发者工具(chrome和firefox中的F12),找到“控制台”,在那里您可以看到js错误。触发请求并检查错误
除此之外,我希望您的代码只是为了一些学习目的,而不是用于实时应用程序/网站。因为编写$sql
字符串的方式非常危险,请参见示例
在实际应用程序中,我还可以做其他一些不同的事情:
- 在客户端-使用jquery或其他库来执行ajax请求,而
是执行请求的有效方法,您可能会发现在实际应用程序中,您必须编写更多代码来处理不同的浏览器和不同的用例XMLHttpRequest
- 在服务器上-读取数据并将其转换为json,将json发送到客户端并格式化/插入。还有一些库可以帮助您实现这一点。目前不好的是,php代码中有一部分html
- 对于一个真正的应用程序,我会在php端使用一些框架(Yii、Laravel等)
这与问题无关-表标题与数据库中的列不匹配。我假设“txtHint”是希望通过AJAX请求显示类别详细信息的div 确保select语句检索类别的值。如果不存在它的记录,而循环什么也不做 a。查询区分大小写。可能$q提供的类别为“Samsung”,但在您的数据库中它存储为“Samsung”,反之亦然。通过将sql中的比较转换为大写或小写来修复此问题。 B检查数据库中是否已经存在$q值。通过在网页或数据库中添加或删除类别列表中的项目来修复此问题
这与问题无关-表标题与数据库中的列不匹配。这可能不是主要问题,但上面定义的while循环中有5列,而while循环中只回显了4列。您是否尝试单独打印和执行查询?这不是问题的原因,但是谢谢你指点