我可以遍历datatable列对象并添加+2的新行

时间:2019-02-02 10:27:30

标签: javascript php jquery mysql laravel-5

我正在使用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

Expected Output

但是我得到的是

WEIGHT     SAMECITY   DIFFERENT CITY
0.5 KG     50         100
0.5 KG     50         100
0.5 KG     50         100
0.5 KG     50         100

What i Get

1 个答案:

答案 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