Как преобразовать json закодированный массив PHP в массив в Javascript?

Я получаю кодированный JSON массив, используя AJAX из файла PHP, но в JavaScript мне нужно использовать его как массив, как я могу создать массив в Javascript?

Мой вызов AJAX в PHP-файл:

$.ajax({ type:"POST", url:"ajaxfetch.php", success:function(result){ alert(result); } }); 

ARRAY Создано в PHP Файл:

 Array ( [0] => Array ( [id] => 4 [deviceID] => xyz123 [latitude] => -33.80010128657071 [longitude] => 151.28747820854187 [altitude] => 34.78788787 [createdDate] => 2013-08-15 23:00:00 [delete] => 0 ) [1] => Array ( [id] => 5 [deviceID] => jdkfhjskh344 [latitude] => -33.950198 [longitude] => 151.259302 [altitude] => 76.44455 [createdDate] => 2013-08-15 21:50:42 [delete] => 0 ) [2] => Array ( [id] => 1 [deviceID] => abc223 [latitude] => -33.890542 [longitude] => 151.274856 [altitude] => 21.4454455 [createdDate] => 2013-08-15 20:00:00 [delete] => 0 ) ) 

Я json закодировал этот массив в PHP, но AJAX извлек его и выводит в строку .

ABOVE ARRAY json кодируется следующим образом:

 $data = array(); $data = $locate_obj->getAllDeviceLocation(); echo json_encode($data); 

Вывод json_encode

 [{"id":"4","deviceID":"xyz123","latitude":" -33.80010128657071","longitude":"151.28747820854187","altitude":"34.78788787","createdDate":"2013-08-15 23:00:00","delete":"0"},{"id":"5","deviceID":"jdkfhjskh344","latitude":"-33.950198","longitude":"151.259302","altitude":"76.44455","createdDate":"2013-08-15 21:50:42","delete":"0"},{"id":"1","deviceID":"abc223","latitude":"-33.890542","longitude":"151.274856","altitude":"21.4454455","createdDate":"2013-08-15 20:00:00","delete":"0"}] 

Я ищу способ создания массива в Javascript с выходом, который я получаю в ответе ajax, так что я могу найти массив формата:

 var locations = [ ['Bondi Beach', -33.890542, 151.274856, 4], ['Coogee Beach', -33.923036, 151.259052, 5], ['Cronulla Beach', -34.028249, 151.157507, 3], ['Manly Beach', -33.80010128657071, 151.28747820854187, 2], ['Maroubra Beach', -33.950198, 151.259302, 1] ]; 

Solutions Collecting From Web of "Как преобразовать json закодированный массив PHP в массив в Javascript?"

Существует три решения этой проблемы:

  • Вызовите JSON.parse явно и передайте ему текст ответа . Возвращаемым значением будет тип данных JavaScript.

  • Установите параметр dataType: 'json' в ваш вызов $.ajax чтобы jQuery анализировал JSON для вас.

  • Установите правильные заголовки ответов для JSON в PHP. jQuery будет определять заголовок и автоматически анализировать JSON.

Если вы хотите изменить структуру на стороне клиента, посмотрите на объекты доступа / процесса (вложенные), массивы или JSON .

 http://api.jquery.com/jQuery.getJSON/ $.getJSON('ajaxfetch.php', function(data) { var locations = []; $.each(data, function(key, val) { locations[val.deviceID] = []; locations[val.deviceID].push(val.id); locations[val.deviceID].push(val.latitude); locations[val.deviceID].push(val.longitude); }); }); 

Проверено не на 100%, а на правильных линиях. Не уверен, где вы получаете имя местоположения, так как оно не находится в массиве, поэтому я использовал deviceID. Использование getJSON должно облегчить вашу жизнь.

Убедитесь, что ваш вывод действителен JSON, а затем укажите dataType: "json" в вашем запросе JQuery AJAX:

 $.ajax({ type: "POST", url: "ajaxfetch.php", dataType: "json", success: function (result) { console.log(result); //Now a JSON object } }); 
 var locations = []; $.ajax({ type: "POST", url: "ajaxfetch.php", dataType: "json", success: function (result) { result.forEach(function(loc) { locations.push(new Array(loc.deviceID, loc.latitude, loc.longitude, loc.id)) }); // locations is now in desired format (except non-existent place name) } });