Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Ajax从数据库中获取数据_Javascript_Php_Html_Ajax - Fatal编程技术网

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等)

您的代码可以正常工作,我可以复制并运行它,只需很少的修改(只是为了重新使用我现有的表),因此请检查以下内容:

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等)

我假设“txtHint”是您希望通过AJAX请求显示类别详细信息的div

确保select语句检索类别的值。如果不存在它的记录,而循环什么也不做

a。查询区分大小写。可能$q提供的类别为“Samsung”,但在您的数据库中它存储为“Samsung”,反之亦然。通过将sql中的比较转换为大写或小写来修复此问题。 B检查数据库中是否已经存在$q值。通过在网页或数据库中添加或删除类别列表中的项目来修复此问题


这与问题无关-表标题与数据库中的列不匹配。

我假设“txtHint”是希望通过AJAX请求显示类别详细信息的div

确保select语句检索类别的值。如果不存在它的记录,而循环什么也不做

a。查询区分大小写。可能$q提供的类别为“Samsung”,但在您的数据库中它存储为“Samsung”,反之亦然。通过将sql中的比较转换为大写或小写来修复此问题。 B检查数据库中是否已经存在$q值。通过在网页或数据库中添加或删除类别列表中的项目来修复此问题


这与问题无关-表标题与数据库中的列不匹配。

这可能不是主要问题,但上面定义的while循环中有5列,而while循环中只回显了4列。您是否尝试单独打印和执行查询?这不是问题的原因,但是谢谢你指点