如何在下拉菜单中显示多项?

时间:2019-02-14 12:21:22

标签: javascript jquery

我想在具有自动完成功能的下拉列表中显示一些多个值

$(document).ready(function () {
    $('#Client-ville_id').typeahead({
        source: function (query, result) {
            $.ajax({
                url: "list_ville.php",
                data: 'query=' + query,
                dataType: "json",
                type: "POST",
                success: function (data) {
                    result($.map(data, function (item) {
                        return {
                            name: item.name,
                            cp:item.departement_code
                        }
                    }));
                }
            });
        }
    });
});
$sql = $conn->prepare("SELECT * FROM ville WHERE name LIKE ?");
$sql->bind_param("s",$search_param);
$sql->execute();
$result = $sql->get_result();
if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        $countryResult[] = $row["name"];
        $countryResult[] = $row["departement_code"];
    }
    echo json_encode($countryResult);
}
$conn->close();

但是我得到一个错误

  

未捕获的TypeError:无法读取(index):531处的null属性“名称”

3 个答案:

答案 0 :(得分:0)

问题是,您需要使用php中的字符串创建数组

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        $countryResult[] = array(
          "name" => $row["name"],
          "departement_code" => $row["departement_code"]
        );
    }
    echo json_encode($countryResult);
}

或者只是:

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        $countryResult[] = $row;
    }
    echo json_encode($countryResult);
}

有一个函数可以在一个函数调用中获取所有数据,这是一个用于mysqli的函数:mysqli_result::fetch_all

答案 1 :(得分:0)

问题在于您创建的是非关联数组,但将其作为关联数组。

while($row = $result->fetch_assoc()) {
    $countryResult[] = $row["name"];
    $countryResult[] = $row["departement_code"];
}

在此循环$countryResult数组之后,需要这样的内容

array(6) {
  [0] => "name1"
  [1] => "departement_code1"
  [2] => "name2"
  [3] => "departement_code2"
  [4] => "name3"
  [5] => "departement_code3"
}

您应该更改while循环:

while($row = $result->fetch_assoc()) {
    $countryResult[] = $row;
}

答案 2 :(得分:-1)

在您的sql文件中

$sql = $conn->prepare("SELECT * FROM ville WHERE name LIKE ?");
$sql->bind_param("s",$search_param);
$sql->execute();
$result = $sql->get_result();
if ($result->num_rows > 0) {
$i = 0;
    while($row = $result->fetch_assoc()) {
        $countryResult[$i]['name'] = $row["name"];
        $countryResult[$i]['departement_code'] = $row["departement_code"];
        $i++;
    }
    echo json_encode($countryResult);
}
$conn->close();