Php 将json数据解析为变量,并在每次迭代时提交给函数
我创建了一个生成json响应的php脚本 这是输出的示例:Php 将json数据解析为变量,并在每次迭代时提交给函数,php,javascript,json,Php,Javascript,Json,我创建了一个生成json响应的php脚本 这是输出的示例: [[],{"idgps_unit":"2","lat":"40","lon":"40","name":"ML350","notes":"Andrew","dt":"2012-10-29 19:43:09","serial":"3602152","speed":"44","odometer":"208.49"},{"idgps_unit":"1","lat":"42","lon":"39","name":"unit1","notes":"
[[],{"idgps_unit":"2","lat":"40","lon":"40","name":"ML350","notes":"Andrew","dt":"2012-10-29 19:43:09","serial":"3602152","speed":"44","odometer":"208.49"},{"idgps_unit":"1","lat":"42","lon":"39","name":"unit1","notes":"fake unit 1","dt":"2012-10-18 18:16:37","serial":"12345","speed":"0","odometer":"0.16"}]
以下是我在PHP中形成响应的方式:
$data[] = array();
foreach ($list->arrayList as $key => $value) {
$unit = new Unit();
$unit = $value;
//create array for json output
$data[] = array('idgps_unit' => $unit->idgps_unit, 'lat' => $unit->lat,
'lon' => $unit->lon, 'name' => $unit->name, 'notes' => $unit->notes,
'dt' => $unit->dt, 'serial' => $unit->serial, 'speed' => $unit->speed,
'odometer' => $unit->odometer);
}
echo json_encode($data);
现在,在JS中,我做到了:
function getCheckedUnits() {
jQuery(function($) {
$.ajax( {
url : "json.php?action=get",
type : "GET",
success : function(data) {
var jsonData = JSON.parse(data);
///PARSE VALUES AND SUBMIT TO A FUNCTION :: START
var C_longitude = 0;
var C_name = 0;
var C_idgps_unit = 0;
var C_serial = 0;
var C_speed= 0;
var C_notes= 0;
var C_dt = 0;
var C_time = 0;
var C_odometer = 0;
initialize(C_longitude,C_name,C_idgps_unit, C_serial,C_speed, C_notes, C_dt, C_time, C_odometer);
///PARSE VALUES AND SUBMIT TO A FUNCTION :: END
}
});
});
}
我需要将json响应解析为值假设
json.parse(data)
只获取json响应中的关联数组,您应该能够像这样获取json数据中的值:
var i = 1;
var C_longitude = jsonData[i]["lon"];
var C_name = jsonData[i]["name"];
假设JSON.parse()没有删除第一个空数组,则i=1将获得第一批数据,i=2将获得第二批数据
解析后的JSON的行为方式与JavaScript中定义的JSON相同,如果在ajax设置中放置
数据类型:“JSON”
,它将返回一个JSON对象,而无需再次解析。所以这看起来像:
function getCheckedUnits() {
jQuery(function($) {
$.ajax( {
url : "json.php?action=get",
type : "GET",
dataType: "json"
success : function(data) {
}
});
});
}
但是,您也可以使用自己的选项,而不仅仅是使用parseJSON函数,因此
var jsonData=jQuery.parseJSON(data)代码>jsonData?如果有多个jsonData[“name”]代码>在数组中?哦,对不起,我没有看到这种情况。我更新了我的答案。这就是问题所在;我在测试元素-0,但它一直未被识别一个空数组([]
)存储在jsonData[0]
),这就是为什么jsonData[0]中的所有内容都未定义的原因。如何从json(数据)获取每个变量?就像$。每个(数据、函数(键、值){alert(值);})你用什么库来解析JSON响应?我不知道;这里不是JS专家:(