我对 javascript 的经验不多,所以我找不到解决我的问题的方法 下面我粘贴了php代码和javascript代码! Javascript 调用 php 来选择并更新所有记录字段为 0 的行每 6 秒...它可以工作,因为数据库每 6 秒更新一次,但是,我不能在 javascript 中使用 items 数组,因为警报告诉我这是未定义的。 ..怎么可能???
PHP 页面:
if ($_GET['action'] == "chatheartbeat") { chatHeartbeat(); }
function chatHeartbeat() {
global $mysqli;
$cuser="Guest";
$idchat=2;//Chat ID
$items=[];
if ($idchat!=""){
$sql = "select * from chat where idchat=".$idchat." and recd=0 order by id ASC";
$result=$mysqli->query($sql);
if ($result->num_rows>0){
while($row=$result->fetch_array()){
$sqlup="UPDATE chat SET recd = '1' WHERE idchat = ".$row['idchat'];
if ($mysqli->query($sqlup)=== FALSE){
echo "Error updating record" . $mysqli->error;
}
$items[$row['id']]['f']=$row['from'];
$items[$row['id']]['m']=$row['message'];
}
}
}
//header('Content-type: application/json');
echo json_encode($items);
JavaScript 文件
function chatHeartbeat(){
$.ajax({
url: 'chat.php?action=chatheartbeat',
type: 'POST',
dataType: 'JSON',
cache: false,
success: function(data) {
alert(data.f);
/*$.each(response.items, function(item){
console.log(response);
if(item){
$(".chatboxcontent").append('<div class=chatboxmessage><span class="chatboxmessagefrom">'+item.f+': </span><span class="chatboxmessagecontent">'+item.m+'</span></div>');
}
})*/;
}
});
setTimeout('chatHeartbeat();',6000);
如何在 JavaScript 中读取这个数组???在控制台日志中我有这个错误:
Uncaught TypeError: Cannot read property 'length' of undefined
最佳答案
我解决了问题
在 php 代码中,我使用 EOD 更改数组
if ($idchat!=""){
$sql = "select * from chat where idchat=".$idchat." and recd=0 order by id ASC";
$result=$mysqli->query($sql);
if ($result->num_rows>0){
while($row=$result->fetch_array()){
$sqlup="UPDATE chat SET recd = '1' WHERE idchat = ".$row['idchat'];
if ($mysqli->query($sqlup)=== FALSE){
echo "Error updating record" . $mysqli->error;
}
$items.=<<<EOD
{
"f": "{$row['from']}",
"m": "{$row['message']}"
},
EOD;
}
}
}
header('Content-type: application/json');
?>
{
"items": [
<?php echo $items;?>
]
}
在 JavaScript 代码中:
success: function(data) {
$.each(data.items, function(i,item){
if(item){
console.log(item.f);
$(".chatboxcontent").append('<div class=chatboxmessage><span class="chatboxmessagefrom">'+item.f+': </span><span class="chatboxmessagecontent">'+item.m+'</span></div>');
}
});
}
关于javascript - jquery:来自 php 的数组从未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30195244/