Javascript jquery:无法从php函数读取响应
我试图从php函数中读取响应,但响应值未定义。但如果我使用chromes inspect元素并进入网络选项卡,我可以读取项目的正确值 代码如下: Javascript函数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) {
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);