javascript - jquery:来自 php 的数组从未定义

标签 javascript php jquery

我对 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/

相关文章:

javascript - Fullcalendar 不断更改 CSS 规则

javascript - 如何使用用户控制的切换(启用/禁用)在 iOS 设备(iPad、iPhone、Mac)上禁用滚动/滚动

php - Javascript 将内联变量传递给外部 : security issue?

jquery - lightbox-0.5 jquery 兼容性问题

jquery - 获取 "Expected ' ,' or ' {' but found ' [选择器 ]'"错误

javascript - 通天插件 : How to insert a sibling node

javascript - AngularJS 观察带有索引的对象数组

php - 为什么 === 在 PHP 中比 == 快?

php - 从 IOS 到 php 服务的 Base64 图像

jquery - 使用 jQuery 提交一个又一个表单?