AJAX 运行正常,但不显示提取的数据

AJAX is running correctly but doesn't display fetched data

本文关键字:显示 提取 数据 运行 AJAX      更新时间:2023-09-26

我的PHP查询运行良好(基于Firebug的响应),但它给我的结果[object Object]在我的直接页面上。所以我猜我的问题出在我的 javascript 上,因为在响应选项卡下的 firebug 上,它会检索我数据库上的所有数据

这是我的JavaScript

    function AjaxRetrieve()
            {
              var rid = document.getElementById('trg').value,
            data = {chat: uid, rid: rid, name: user};
 $.ajax({
      url: "includes/getChat.php",
      type: "GET",
      data: data,
  dataType: 'json',
   success: function(result){
     var res = $([]);
        $.each(result[0], function(key, value) {
            res = res.add($('<div />', {text : value}));
        });
        $("#clog").html(res);
   }
});
        }

要求的 php 脚本是这样的

        $sql7 = "SELECT   message_content, username , message_time, recipient FROM ".$tbpre."chat_conversation WHERE msgid=:chat";
    $stmt7=$con3->prepare($sql7);
    $stmt7->bindValue( 'chat', $msgd, PDO::PARAM_STR);
    $stmt7->execute();

  $message_query = $stmt7;

$json = array();
if($message_query->rowCount() > 0) {
    while($message_array = $stmt7->fetchAll(PDO::FETCH_ASSOC)) {
        $json[] = $message_array;
    }
    echo json_encode($json);
}

我还不太熟悉JQUERY/AJAX/Javascript,所以我实际上不确定我正在做的事情是否正确,我只是将我的一些代码基于jquery的文档和一些 来自我们其他成员的建议在这里

你构造json数据的方式是错误的,试试这个方式

$json =array();
$i=0;
if($message_query->rowCount() > 0) {
  while($message_array = $stmt7->fetchAll(PDO::FETCH_ASSOC)) {
     $json[$i]= $message_array;
     $i++;
  }
echo json_encode($json);
}

快乐编码:)

像下面这样更改您的成功回调,您有一个对象数组。

   success: function(result){
        var container = $("#clog");
        $.each(result, function(i, message) {
            $.each(message, function(key, value) {
                container.append($('<div />').html(key + ':' + value));
            });
        });
   }

编辑:

而且您必须在循环时将fetchAll更改为fetch

while($message_array = $stmt7->fetch(PDO::FETCH_ASSOC)) {
    $json[] = $message_array;
}
echo json_encode($json);

或者只使用没有 while 循环的fetchAll

$json = $stmt7->fetch(PDO::FETCH_ASSOC);
echo json_encode($json);