我正在使用ajax jquery从mysqli表中获取数据,并使用列对象将其作为行填充到Datatable中,我能否遍历我从服务器得到的响应数据,然后通过X编号添加新的行我定义。
我曾经尝试过,但是使用此代码,我在X次循环运行中重复了相同的行,但在其他行中未添加任何增量。
从MYSQL获取数据的我的PHP API
if (isset($_POST['what_need']) AND $_POST['what_need'] == 'signup_getslabs') {
$getTotalcountry = $obj -> getSlabSignup($_POST['placeid'], $_POST['range']);
$return_ardr = array();
foreach($getTotalcountry as $row) {
$same_city_per_kg = $row['wc_slabr_hkg'];
$diff_city_per_kg = $row['dc_slabr_hkg'];
$fnfsamecityperkg = $same_city_per_kg - 50;
$fnfdifferentcityperkg = $diff_city_per_kg - 50;
$id = $row['id_slabr'];
for ($i = 3; $i >= 0; $i--) {
$samecit = $fnfsamecityperkg + 50;
$diffcit = $fnfdifferentcityperkg + 50;
$return_ardr[] = array(
"samecity" => $samecit,
"diffcity" => $diffcit,
"weight" => 0.5,
"idslab" => $id
);
}
}
function utf8ize($d) {
if (is_array($d)) {
foreach($d as $k => $v) {
$d[$k] = utf8ize($v);
}
} else if (is_string($d)) {
return utf8_encode($d);
}
return $d;
}
echo json_encode(utf8ize($return_ardr));
}
发送ID请求定义的表中的API和打印数据的AJAX请求的我的数据表代码
$('#ratestd').DataTable({
"bDestroy": true,
"serverSide": false,
"ajax": {
"url": "ajax-requests/ajaxm.php",
"type": "POST",
"dataSrc": function(d) {
return d
},
"dataType": "json",
"data": function(data) {
data.what_need = 'signup_getslabs';
data.placeid = placeid;
data.range = range;
}
},
dom: 'Bflrtip',
"buttons": [
'copyHtml5', 'excelHtml5', 'pdfHtml5', 'csvHtml5', 'colvis'
],
"columns": [{
"data": "weight"
},
{
"data": "samecity"
},
{
"data": "diffcity"
}
]
});
我期望这样的输出
WEIGHT SAMECITY DIFFERENT CITY
0.5 KG 50 100
1.0 KG 100 150
1.5 KG 150 200
2.0 KG 200 250
但是我得到的是
WEIGHT SAMECITY DIFFERENT CITY
0.5 KG 50 100
0.5 KG 50 100
0.5 KG 50 100
0.5 KG 50 100
答案 0 :(得分:0)
问题似乎出在您的for循环中。
for ($i = 3; $i >= 0; $i--) {
$samecit = $fnfsamecityperkg + 50;
$diffcit = $fnfdifferentcityperkg + 50;
$return_ardr[] = array(
"samecity" => $samecit,
"diffcity" => $diffcit,
"weight" => 0.5,
"idslab" => $id
);
}
假设这是您要创建4个值的地方,您可能需要尝试以下操作:
$samecit = $fnfsamecityperkg;
$diffcit = $fnfdifferentcityperkg;
$weight = 0;
for ($i = 3; $i >= 0; $i--) {
$samecit += 50;
$diffcit += 50;
$weight += 0.5;
$return_ardr[] = array(
"samecity" => $samecit,
"diffcity" => $diffcit,
"weight" => $weight,
"idslab" => $id
);
}
返回:
array (size=4)
0 =>
array (size=4)
'samecity' => int 50
'diffcity' => int 100
'weight' => float 0.5
'idslab' => null
1 =>
array (size=4)
'samecity' => int 100
'diffcity' => int 150
'weight' => float 1
'idslab' => null
2 =>
array (size=4)
'samecity' => int 150
'diffcity' => int 200
'weight' => float 1.5
'idslab' => null
3 =>
array (size=4)
'samecity' => int 200
'diffcity' => int 250
'weight' => float 2
'idslab' => null