在php中有任何其他方法可以停止为json_encode返回未定义的值

时间:2015-03-13 12:11:28

标签: javascript php jquery

我从一个页面发送了许多动态post id,并且php服务器端页面(server.php)使用这些id进行查询,以在mysql中找出新添加的数据

如果在mysql中未找到任何新添加的数据,它将返回undefined值。所以我添加了这个if (msg.id !== undefined && msg.detail !== undefined && msg.name !== undefined) { //do here }来隐藏undefined。

但是在添加上面一行之后,我的脚本隐藏了undefined值,但仅返回第一个CID新添加的值。

这意味着如果CID向php发送了ID(100,101,102,103等),它只返回100个id新添加的值并附加它。

所以没有使用上面的方法,有没有其他方式到PHP服务器端删除未定义的值?

NB 如果没有上面的行,它会很好地返回所有CID的值,但如果没有找到新添加的数据,则返回undefined值时间间隔,所以我需要停止返回{ {1}}。

我的javascript:

undefined

server.php

var CID = []; // Get all dynamic ids of posts (works well)
$('div[data-post-id]').each(function(i){
CID[i] = $(this).data('post-id');
});

function addrep(type, msg){
CID.forEach(function(id){
if (msg.id !== undefined && msg.detail !== undefined && msg.name !== undefined) {
    $("#newreply"+id).append("<div class='"+ type +""+ msg.id +"'><ul><div class='newkochi'>"+ msg.name +"</div><div class='cdomment_text'>"+ msg.detail +"</ul></div>");
}
});
}

function waitForRep(){
    $.ajax({
        type: "GET",
        url: "server.php",
        cache: false,
        data: {CID : CID},
        timeout:15000, 
        success: function(data){ 
            addrep("postreply", data);
            setTimeout(waitForRep, 15000 );
        },
        error: function(XMLHttpRequest, textStatus, errorThrown){
            setTimeout(waitForRep, 15000); }
    });
}

$(document).ready(function(){
    waitForRep();
});

1 个答案:

答案 0 :(得分:0)

您正在覆盖您的价值

while($rows = mysqli_fetch_assoc($res)){
      $data[] = $rows;
}

您需要做的就是填充$data$data[]=$rows;告诉PHP将$rows附加到数组$data。如果您需要更改数据,请在执行追加之前修改$rows