Как проанализировать данные JSON, полученные с помощью PHP-скрипта - PullRequest
0 голосов
/ 20 апреля 2019

Я отправил данные из своего php-скрипта с помощью функции `json_encode '.

, если I console.log(resp) ниже, это O / P, который я получаю.

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'));
    }

Ответы [ 2 ]

2 голосов
/ 20 апреля 2019

Поскольку 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);

Ofконечно, row.add() также принимает аргумент массива - так что это тоже будет работать:

$("#grpList").DataTable().row.add(resp.data).draw(false);
1 голос
/ 20 апреля 2019

Проблема на стороне сервера.

Вы определяете $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.

Так что попробуйте это ... И и примените ответ Джека.;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...