【问题标题】:convert php array to js selectpicker array format将php数组转换为js selectpicker数组格式
【发布时间】:2017-04-04 15:14:53
【问题描述】:

这就是我构建 sql 数据并发送回 ajax 调用的方式:

    (...)
    $sql = "SELECT id_option FROM options WHERE id_win = '{$id_win}'";
    $result = mysqli_query($conn, $sql);
    $rows =  array();
    while ($row = mysqli_fetch_array($result)) {
      $rows[] =  $row;
    }

    $data["win_data"] = $rows;
    echo json_encode($data);

这是我从 DB 中获取 selectpicker 选项的 ajax 函数:

$.ajax({
  type: "POST",
  url: ...,
  data: ...,
  dataType: "json",
  success: function(data)   {       
    $("#id_win").selectpicker("val", data.win_data);
   // $("#id_win").selectpicker("val", [1,3];
  }
});

data.win_data 变量应为:[1,3]

但如果我这样做: console.log(JSON.stringify(data.win_data)); 我明白了:

[{"0":"1","id_option":"1"},{"0":"3","id_option":"3"}]

为 selectpicker 获取正确格式数组的最简单方法是什么?

【问题讨论】:

  • 请告诉我们 print_r($data["win_data"])!

标签: javascript php mysqli


【解决方案1】:

这是因为$row 是一个数组。看:https://secure.php.net/manual/pt_BR/mysqli-result.fetch-array.php

你必须像这样使用:

    (...)
    $sql = "SELECT id_option FROM options WHERE id_win = '{$id_win}'";
    $result = mysqli_query($conn, $sql);
    $rows =  array();
    while ($row = mysqli_fetch_array($result)) {
      $rows[] =  $row['id_option'];
    }

    $data["win_data"] = $rows;
    echo json_encode($data);

【讨论】:

    【解决方案2】:

    忘记mysqli并使用PDO,它有everything you need

    $stmt = $pdo->prepare("SELECT id_option FROM options WHERE id_win = ?");
    $stmt->execute([$id_win]);
    $data["win_data"] = $stmt->fetchAll(PDO::FETCH_COLUMN);
    echo json_encode($data);
    

    此代码 2 倍,安全

    100 倍

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-20
      • 1970-01-01
      相关资源
      最近更新 更多