Невозможно получить значения из JSON, возвращенные из PHP API в реагировать нативно - PullRequest
0 голосов
/ 25 апреля 2020

Формат, который я получаю от сервера:

Object {
  "1": Object {
    "id": "EMP1_ID",
    "name": "EMP1",
  },
  "2": Object {
    "id": "EMP2_ID",
    "name": "EMP2",
  },
  "3": Object {
    "id": "EMP3_ID",
    "name": "EMP3",
  }
}

Как мне получить id и name в Javascript и сохранить в массиве?

Это что я делаю в PHP файле

$arr = array();
$query_result = mysqli_query($conn, $query);
$i=1;
while($row = mysqli_fetch_array($query_result)){
     $arr[$i] = array(  
          "id"=> $row[id],
          "name"=> $row[name]
       );
     $i=$i+1;
}
echo json_encode($arr);

Ответы [ 3 ]

0 голосов
/ 25 апреля 2020

Чтобы json_encode() преобразовал значение в массив, ваш массив должен быть правильно проиндексирован от 0 до n-1: [0, 1, 2, ..., n-1]. Ассоциативный массив - это вещь PHP. Попробуйте это:

while($row = mysqli_fetch_array($query_result)){
     $arr[] = [  
          "id"=> $row['id'],
          "name"=> $row['name']
     ];
}

Обратите внимание, как я просто добавляю $arr к *1006* с $arr[] вместо использования какого-либо явного индекса.

0 голосов
/ 25 апреля 2020

@ Робо Робок прав, ваш код php должен выглядеть следующим образом:

РЕДАКТИРОВАТЬ:

Вы должны позволить серверу выполнять тяжелую работу, и получить результаты уже проанализированы.

$arr = array();
// $query = "SELECT id,name FROM table";
$query_result = mysqli_query($conn, $query);
// where $row has id and name keys only (a little optimization)

while($row = mysqli_fetch_array($query_result))
     $arr[] = $row;

echo json_encode($arr);
0 голосов
/ 25 апреля 2020

Вы можете использовать Object.values

const obj = {
  "1": {
    id: "EMP1_ID",
    name: "EMP1"
  },
  "2": {
    id: "EMP2_ID",
    name: "EMP2"
  }
}

Object.values(obj) // [{id: "EMP1_ID", name: "EMP1"}, {id: "EMP2_ID", name: "EMP2"}]

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