如何将json编码的PHP数组转换为Javascript数组?
如何将json编码的PHP数组转换为Javascript数组?
这个问题已经在其他地方有了答案:
我正在使用AJAX从PHP文件获取一个JSON编码数组,但在JavaScript中我需要将它用作数组,我该如何在JavaScript中创建一个数组?
我对PHP文件的AJAX调用:
$.ajax({ type:"POST", url:"ajaxfetch.php", success:function(result){ alert(result); } });
在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 ) )
我在PHP中使用json_encode对此数组进行了编码,但AJAX检索并输出为字符串。
上述数组已经如下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"}]
我正在寻找的方法是,如何通过ajax响应中接收到的输出,在JavaScript中创建一个数组,以便我可以得到一个如下格式的数组:
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] ];
admin 更改状态以发布 2023年5月20日
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); }); });
没有完全测试,但是它基本正确。不确定您从哪里获取位置名称,因为它不在数组中,所以我使用了deviceID。使用getJSON应该可以让您的生活更轻松。
这个问题有三种解决方法:
-
显式调用
JSON.parse
并将响应文本传递给它。返回值将是JavaScript数据类型。 -
在
$.ajax
调用中设置dataType: 'json'
选项,使jQuery为您解析JSON。 -
在PHP中设置正确的JSON响应头。jQuery也会自动检测头并解析JSON。
如果您想在客户端修改结构,请查看访问/处理(嵌套)对象、数组或JSON。