簡體   English   中英

使用PHP和AJAX從表中加載數據

[英]Load data from table using PHP & AJAX

我正在嘗試使用PHP和AJAX從表中檢索數據,目前我能夠以json格式顯示查詢結果,我要做的是從該數組中選擇特定數據,例如,我得到了該數組:

{數據:[{IdProduct:“ 1”,名稱:“此處的名稱......”,...}]}

例如,我只想選擇名稱,我嘗試這樣做:

function LoadProductos() {

$.ajax({
    url: '../../class/loadProd.php',
    method: 'POST',
    success: function (data) {
      var aRC = JSON.parse(data);

      for (var i = 0; i < aRC.length; i++) {
        console.log(aRC[i].Name);
      }
    }

  });
}

但這什么也沒顯示,我該怎么辦? 這是我的PHP代碼:

while($row = mysqli_fetch_array($registros)) {

    $table.='{
        "IdProduct":"'.$row['IdProduct'].'",
        "Name":"'.$row['Name'].'",
        "Description":"'.$row['Description'].'",
        "ImagePath":"'.$row['ImagePath'].'"
    },';

    $table = substr($table, 0, strlen($table) -1);

    echo '{"data":['.$table.']}';
}

您需要在代碼中進行幾項更改,例如:

  • 那不是您應該創建json字符串的方式。 while()循環之前創建一個空數組,並while()循環的每次迭代中將行詳細信息附加到此數組。 退出循環后,只需將json_encode()函數應用於結果數組即可獲得最終的json字符串。

     $table = array(); while($row = mysqli_fetch_array($registros)) { $table[]= array( 'IdProduct' => $row['IdProduct'], 'Name' => $row['Name'], 'Description' => $row['Description'], 'ImagePath' => $row['ImagePath'] ); } echo json_encode($table); 
  • 由於您希望服務器提供json字符串,因此請將此設置dataType:'json'到您的AJAX請求中。 dataType是您期望從服務器返回的數據類型。 並且在success()回調函數中,只需遍歷json結果即可獲取相關數據。

     function LoadProductos() { $.ajax({ url: '../../class/loadProd.php', method: 'POST', dataType: 'json', success: function (data) { for (var i = 0; i < data.length; i++) { alert(data[i].Name); } } }); } 

首先,您不應該循環中回顯json數據。 它應該在循環之外 您也不應該建立自己的json數據。

讓我們構建一個看起來像您想要的json響應的數組。 然后,我們將使用函數json_encode()將其編碼為適當的json-string:

// Define the response array
$response = [
    'data' => []
];

while($row = mysqli_fetch_array($registros)) {

    // Push a new array to 'data' array
    $response['data'][] = [
        'IdProduct'   => $row['IdProduct'],
        'Name'        =>.$row['Name'],
        'Description' => $row['Description'],
        'ImagePath'   => $row['ImagePath']
    ];
}

// Now, let's encode the data:
echo json_encode($response);

在您的PHP文件中,根據以下內容進行更改:

$outp = array();
$outp = $res->fetch_all(MYSQLI_ASSOC);

為了確保json_encode不返回null

function utf8ize($d) {
 if (is_array($d)) {
    foreach ($d as $k => $v) {
        $d[$k] = utf8ize($v);
    }
} else if (is_string ($d)) {
    return utf8_encode($d);
}
return $d;
}
echo json_encode(utf8ize($outp));

您的JavaScript沒問題,您只需要更改PHP中的代碼即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM