Javascript jquery:无法从php函数读取响应

Javascript jquery:无法从php函数读取响应,javascript,php,jquery,Javascript,Php,Jquery,我试图从php函数中读取响应,但响应值未定义。但如果我使用chromes inspect元素并进入网络选项卡,我可以读取项目的正确值 代码如下: Javascript函数 function chatHeartbeat(){ $.ajax({ url: 'chat.php?action=chatheartbeat', type: 'post', dataType: 'json', success: function(response) {

我试图从php函数中读取响应,但响应值未定义。但如果我使用chromes inspect元素并进入网络选项卡,我可以读取项目的正确值

代码如下:

Javascript函数

function chatHeartbeat(){       
$.ajax({        
url: 'chat.php?action=chatheartbeat',
type: 'post',
dataType: 'json',    
success: function(response) {       
    $.each(response.items, function(item){
        //alert(item.m);                
        $(".chatboxcontent").append('<div class=chatboxmessage><span class="chatboxmessagefrom">'+item.f+': </span><span class="chatboxmessagecontent">'+item.m+'</span></div>');
    });         
    setTimeout('chatHeartbeat();',3000);
},
error: function(){
    $(".chatboxcontent").append('<div class=chatboxmessage><span class="chatboxmessagefrom">ERROR!</span><span class="chatboxmessagecontent">UNKNOWN</span></div>');
    alert("failed");
}

});
}
下面是php代码:

function chatHeartbeat() {
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['id'];
            if ($mysqli->query($sqlup)=== FALSE){
                echo "Error updating record" . $mysqli->error;
            }
            $item.=<<<EOD
                       {            
            "f": "{$row['from']}",
            "m": "{$row['message']}"
       },
EOD;
}

    }
}else{
    $item.=$item.=<<<EOD
                       {            
            "f": "{$mysqli->connect_errno}",
            "m": "{$mysqli->connect_error}"
       },
EOD;
}
    }
}else{
    $item.=$item.=<<<EOD
                       {            
            "f": "{$mysqli->connect_errno}",
            "m": "{$mysqli->connect_error}"
       },
EOD;
}
?>
{
    "items": [
          <?php echo $item;?>
    [
}
<?php
}
?>

如果您使用格式错误的json格式进行响应,则可能会发生这种情况。 尝试简单地将数据放入数组/对象中,然后使用 关于它:


虽然您通常不需要它,但您可以而且应该设置内容类型标题:

<?PHP
$data = /** whatever you're serializing **/;
header('Content-Type: application/json');
echo json_encode($data);
注意:这是另一篇文章的内容

在成功的过程中使用调试器。那么console.logresponse很可能是一个对象而不是数组。如果这还不能让你找到什么地方,复制并粘贴console.log响应,这样我们就可以查看它。你的第一部分是JavaScript,而不是Java。两种完全不同的语言我做到了,但结果没有改变。。。。我也添加了内容类型标题。。。。如果在chrome inspect element network tab中检查结果,我有值,但textarea为空。。。。有什么想法吗???请确保php页面中打印的唯一内容是json数据:在输出或php标记之前或之后没有空格或换行符。在chrome inspect元素的网络选项卡中,我有一个:f:guest m:akdkadbaczxvzcv为什么txtarea是空的?在console.log中,我有一个错误:Uncaught TypeError:Cannot read属性未定义标题“Content-type:application/json”的“length”;echo json_编码$items;我又犯了错误。
<?PHP
$data = /** whatever you're serializing **/;
header('Content-Type: application/json');
echo json_encode($data);