【发布时间】:2018-05-28 14:09:54
【问题描述】:
我正在尝试使用 AJAX / PHP 创建自动完成输入,但从 PHP 返回的数组似乎破坏了它。
这个想法是让风味名称和风味公司名称显示在用户可以选择的下拉/扩展 div 中。
AJAX 成功返回的数组(数据):
数组为 JSON:
我想获取 flavour_name 值和 flavour_company_name 值作为字符串放入框中,然后在选择时将它们都作为一个数组抓取 - flavour_name / flavour_company_name 放入DB 稍后。
我试过使用JSON.stringify,创建一个var obj 我让它返回1 个值,但不是我想要的列表。
感谢所有帮助,在此先感谢。
我的 AJAX
$("#flavour-name-input").keyup(function(){
var token = '<?php echo json_encode($token); ?>';
var search = $(this).val();
$.ajax({
type: "POST",
url: "controllers/recipeControl.php",
data: { token: token, search: search },
beforeSend: function(){
$("#search-box").css("background","#FFF no-repeat 165px");
},
success: function(data){
//var obj = JSON.parse(data);
$("#suggesstion-box").show();
$("#suggesstion-box").html(data);
//$("#suggesstion-box").html(obj['flavour_name']);
$("#search-box").css("background","#FFF");
}
});
});
我的 PHP 控制器
if(isset($_POST['search'])) {
if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest' && isset($_POST['token'])
&& json_decode($_POST['token']) === $_SESSION['token']){
$search = $_POST['search'];
echo json_encode($flavours->getAllFlavoursSearch($search));
}
}
我的 PHP 函数
/**
GET ALL FLAVOURS FOR SEARCH
*/
public function getAllFlavoursSearch($search) {
$query = 'SELECT flavour_name, flavour_company_name FROM flavours WHERE flavour_name LIKE :search ORDER BY flavour_name ASC LIMIT 0,100';
$stmt = $this->queryIt($query);
$stmt = $this->bind(':search', '%'.$search.'%', PDO::PARAM_STR);
return $this->resultset();
}
【问题讨论】:
-
既然你用的是JQuery,为什么不用JQuery的自动补全呢? jqueryui.com/autocomplete
-
因为我想了解更多关于 jQuery 的知识,不过谢谢