[英]How to parse a JSON data that has been received by a PHP scipt
我已經使用json_encode函數從PHP腳本發送了數據。
如果我下面的console.log(resp)
是O / PI get。
data: "{"dept_name":"IT","city_name":"Mumbai","emp_id":"#AC001","emp_name":"Akshay S. Shrivastav"}
{"dept_name":"IT","city_name":"Mumbai","emp_id":"#AC003","emp_name":"Aakash Shrivastav"}" status: "success"
但是,如果我console.log(resp.data)
我得到以下數據
{"dept_name":"IT","city_name":"Mumbai","emp_id":"#AC001","emp_name":"Akshay S. Shrivastav"}{"dept_name":"IT","city_name":"Mumbai","emp_id":"#AC003","emp_name":"Aakash Shrivastav"}
現在,我嘗試在使用以下代碼的數據表中顯示此數據。
$('#grpList').DataTable().row.add([
resp.data.dept_name,
resp.data.city_name,
resp.data.emp_id,
resp.data.emp_name
]).draw(false);
我收到以下錯誤
DataTables warning: table id=grpList - Requested unknown parameter '0' for row 0, column 0. For more information about this error, please see http://datatables.net/tn/4
當我單手顯示僅console.log(resp.data.dept_name)
它說undefined
如果數據增加,我將有多個JSON響應,目前,我只有兩個。 我不知道如何使用循環顯示多個數據並將其附加到數據表。
我正在使用以下php代碼生成JSON
$jsonArray = "";
if($data->num_rows > 0)
{
while($row = $data->fetch_assoc())
{
$jsonArray .= json_encode(
array(
"dept_name" => $row['department_name'],
"city_name" => $row['city_name'],
"emp_id" => $row['emp_id'],
"emp_name" => $row['name']
));
}
echo json_encode(array("data" => $jsonArray, "status" => 'success'));
}
因為resp.data
是對象數組 。 您需要首先獲取索引-假設索引為0
,或者數組中的第一個對象:
$("#grpList").DataTable().row.add([
resp.data[0].dept_name,
resp.data[0].city_name,
resp.data[0].emp_id,
resp.data[0].emp_name
]).draw(false);
如果要第二個對象:
$("#grpList").DataTable().row.add([
resp.data[1].dept_name,
resp.data[1].city_name,
resp.data[1].emp_id,
resp.data[1].emp_name
]).draw(false);
當然, row.add()
接受數組參數-這樣也可以工作:
$("#grpList").DataTable().row.add(resp.data).draw(false);
問題出在服務器端。
您將$jsonArray
定義為字符串 ! 錯了
嘗試以下方法:
$jsonArray = []; // An ARRAY here!
if($data->num_rows > 0)
{
while($row = $data->fetch_assoc())
{
array_push($jsonArray, json_encode( // Use array_push here
array(
"dept_name" => $row['department_name'],
"city_name" => $row['city_name'],
"emp_id" => $row['emp_id'],
"emp_name" => $row['name']
));
}
echo json_encode(array("data" => $jsonArray, "status" => 'success'));
}
編輯
如果上述方法有效,我不會...因為我沒有對其進行測試。
但是,這就是我的寫法(我想您會有更多機會) :
$jsonArray = [];
if($data->num_rows > 0) {
while($row = $data->fetch_assoc()) {
// A temp array to rename the one of the keys...
$tempArray = [];
$tempArray = ["dept_name"] = $row['department_name'];
$tempArray = ["city_name"] = $row['city_name'];
$tempArray = ["emp_id"] = $row['emp_id'];
$tempArray = ["emp_name"] = $row['name'];
// Push to the jsonArray now...
array_push($jsonArray,$tempArray);
}
// And finally the result array... To be json encoded
$result = [];
$result = ["status"] = "success";
$result = ["data"] = jsonArray;
echo json_encode($result);
}
請注意,如果不重命名一個鍵,並且如果數據庫中每行只有4個數據,則可以... array_push($jsonArray,$row);
直接使用,而不使用$tempArray
。
所以,試試這個... 然后申請傑克的答案。 ;)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.