我有以下脚本在select2
中搜索产品<script type="text/javascript">
$( document ).ready(function() {
$("#productSelect").select2({
placeholder: 'Seleccione un Producto',
minimumInputLength: 3,
ajax: {
url: 'PrdSearch.php',
dataType: 'json',
delay: 50,
processResults: function (data) {
return {
results: data
};
},
cache: true
}
});
});
和执行搜索的PrdSearch.php文件
<?php
require_once("db.php");
if (empty($_GET['q'])) exit ;
$q = strtolower($_GET["q"]);
if (get_magic_quotes_gpc()) $q = stripslashes($q);
$sql = "SELECT * FROM " .$database_table_prefix."products" . " WHERE prd_name like '%$q%' or prd_code like '%$q%' ORDER BY prd_name LIMIT 20";
$stmt = $conn->prepare($sql);
$stmt->execute();
$rows = $stmt->rowCount();
$result = [];
while ($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
$result [] = ['id'=>$row['prd_id'], 'text'=>$row['prd_name']];
}
echo json_encode($result);?>
效果很好,并且单个产品的prd_id
和prd_name
分别带有id
和text
的值,name
被置于正确value
中的<select>
。
我尝试通过在数组code
中添加price
和keys
来提供更多产品数据,例如values
和$result
,我没有任何错误,但我不知道如何从阵列中恢复其他数据,我知道"text"
的值仍然在<select>
但其他字段我如何恢复它们? / p>
另一件事是,如果我已经有了如何将值分配给表单输入的字段?
感谢您的回答。
答案 0 :(得分:0)
在您的AJAX功能中,您可以解码json并访问您想要的任何数据。试试这个。
ajax: {
url: 'PrdSearch.php',
dataType: 'json',
delay: 50,
processResults: function (data) {
var d = $.parseJSON(data);
alert(d.price);
return {
results: data
};
},
cache: true
}
这样您就可以从编码的json文件中访问任何数据。希望能帮助到你。 要将值分配给表单,您只需使用以下代码。
$("#input_id").val(d.price); //it will assign the product price to the input with id "input_id"
答案 1 :(得分:0)
尝试使用以下内容交换AJAX调用:
$.ajax({
url: 'PrdSearch.php',
dataType: 'POST',
success: function (data) {
processResults(data); // assume this fuction is declared elsewhere now
} else {
// ajax failed msg
}
});
答案 2 :(得分:0)
select2
数据存储在e.params.data
中,因此脚本如下:
$( document ).ready(function() {
$('#productSelect').on("select2:select", function (e) {
$("#inv_code").val(e.params.data.code);
$("#inv_price").val(e.params.data.price);
});
$("#productSelect").select2({
placeholder: 'Seleccione un Producto',
minimumInputLength: 3,
ajax: {
url: 'PrdSearch.php',
dataType: 'json',
delay: 50,
processResults: function (data) {
return {
results: data
};
},
cache: true
}
});
});
感谢您的贡献