- 问题尚未解决 -
我正在尝试调用数据库,将表的所有行放在数组中,将该表作为json数据传递给我的JS,然后将该数据用作函数的参数。
当我运行脚本时没有任何反应。我在控制台中没有出现任何错误,脚本的其余部分正常加载。我是mySQL和PHP的新手,我在这里做错了什么?我怀疑我以某种方式搞砸了PHP。
已尝试:
这是我正在使用的更新的JS:
this.taskMenu = function()
{
var table = [];
$.getJSON("taskMaster.php", {"table" : "firstlist"},
function(data)
{
table.push(data);
for(i=0; i<table.length; i++)
{
var taskId = table[i].taskName.replace(/\s+/g,"") + i;
formatTask("interface",taskId,table[i].taskName,table[i].taskDescription,table[i].taskComplete);
}
});
}
这是更新后的PHP:
error_reporting(E_ALL); ini_set('display_errors','On');
$con = mysql_connect("localhost", "root", "m3648y73");
if (!$con){die('Could not connect: ' . mysql_error());};
mysql_select_db("tasklistdb", $con);
$table = $_GET['table'];
$sql = mysql_query("SELECT taskName, taskId, taskDescription, taskComplete FROM `".$table."`");
$listTasks = array();
while ($row_user = mysql_fetch_assoc($sql))
$listTasks[] = $row_user;
echo json_encode($listTasks);
mysql_close($con);
我是否正确链接到数据库?
答案 0 :(得分:3)
getJSON是异步调用。因此,在它从PHP获取值并执行回调函数之前,它会移动到for循环,此表为空。
解决方案:在回调函数
中移动for循环答案 1 :(得分:2)
您在php文件
中的$listTasks = array()
行上缺少一个半冒号
答案 2 :(得分:2)
这是因为在请求本身之前执行的异步请求之后的js-code已经结束。试试这个:
this.taskMenu = function()
{
var table = [];
$.getJSON("taskMaster.php", {table : "first list"},
function(data)
{
table.push(data);
for(i=0; i<table.length; i++)
{
var taskId = table[i].taskName.replace(/\s+/g,"") + i;
formatTask("interface",taskId,table[i].taskName,table[i].taskDescription,table[i].taskComplete);
}
});
}
答案 3 :(得分:1)
您的表名不能是“第一个列表”
MySQL表名中不能有空格。
另外你应该把put表放在JSON值的双引号中,如{“table”:“table_name”}