首页 > 解决方案 > PHP,JSON 写入表

问题描述

我在为我的项目创建动态表时遇到问题。使用 AJAX,我从 PHP 和 JSON 获取数据将数组转换为表,但转储不起作用。

if ($result->num_rows > 0) 
{
  while($row = $result->fetch_assoc()) 
  {
    if ($row["Author"] !== "" && $row["Name"])
    {
      $table_data = array(
        "Author" => "".$row["Author"]."",
        "Name" => "".$row["Name"]."",
        "Text" => "".$row["Text"].""
      );
      array_push($filtr, json_encode($table_data));

      echo "".json_encode($table_data).""; 
    }
  }
}
$.post("../include/filtr_callback.php", { sel_id: "" + knih_callback + "" }, function(data, status) {
  //var mydata = JSON.parse(data);
  var mydata = JSON.parse(JSON.stringify(data)); 
  mydata = "[ " + mydata + " ];"
  console.log(mydata);

  var tbl = $("<table/>").attr("id", "table-data");
  $("#tabulka").append(tbl);
  for (var i = 0; i < mydata.length; i++) {
    var tr = "<tr>";
    var td1 = "<td>" + mydata[i]["Author"] + "</td>";
    var td2 = "<td>" + mydata[i]["Name"] + "</td>";
    var td3 = "<td>" + mydata[i]["Name"] + "</td>";
    var td4 = "<td>" + mydata[i]["Text"] + "</td></tr>";
    $("#table-data").append(tr + td1 + td2 + td3 + td4); 
  }
});

标签: javascriptphpjqueryjson

解决方案


完成循环迭代后,您需要回显结果。所以我创建了一个次要array名称$table,我在每次迭代后存储结果。

$table = [];
if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        if($row["Author"] !== "" && $row["Name"]){
            $table_data = array(
                "Author" => "".$row["Author"]."",
                "Name" => "".$row["Name"]."",
                "Text" => "".$row["Text"].""
            );
            array_push($filtr,json_encode($table_data));
            $table[] = $table_data;
        }
    }

    echo json_encode($table); 
}

我还对您的 javascript 代码进行了一些小改动。你不需要再打电话JSON.stringify给你的回复,而且也是mydata数组本身,JSON.parse所以我也删除了mydata = "[ " + mydata + " ];".

$.post("../include/filtr_callback.php", { sel_id: "" + knih_callback + "" }, function(data, status) {
  var mydata = JSON.parse(data); 
  console.log(mydata);

  var tbl = $("<table/>").attr("id", "table-data");
  $("#tabulka").append(tbl);
  for (var i = 0; i < mydata.length; i++) {
    var tr = "<tr>";
    var td1 = "<td>" + mydata[i]["Author"] + "</td>";
    var td2 = "<td>" + mydata[i]["Name"] + "</td>";
    var td3 = "<td>" + mydata[i]["Name"] + "</td>";
    var td4 = "<td>" + mydata[i]["Text"] + "</td></tr>";
    $("#table-data").append(tr + td1 + td2 + td3 + td4); 
  }
});

推荐阅读