我正在尝试使用AJAX / PHP创建一个自动完成输入,但是从PHP返回的数组似乎正在打破它。
我们的想法是在用户可以选择的下拉/展开div中显示风味名称和风味公司名称。
数组返回AJAX成功(数据):
数组为JSON:
我希望将flavour_name
值和flavour_company_name
值作为字符串放入框中,然后在选择时将它们作为包含 - flavour_name
/ {的数组抓取{1}}稍后加入flavour_company_name
。
我已尝试使用DB
,创建JSON.stringify
我已经让它返回1个值但不是我想要的列表。
所有帮助表示感谢,提前谢谢。
我的AJAX
var obj
我的PHP控制器
$("#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));
}
}
答案 0 :(得分:1)
我认为你必须在控制器中实现这一点。现在你返回json,这被视为一个字符串。我将在控制器中创建一个数组,然后循环它并创建html。
<?php
if(isset($_POST['search'])) {
if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest' && isset($_POST['token'])
&& json_decode($_POST['token']) === $_SESSION['token']){
$search = $_POST['search'];
$html = '<ul>';
$content = $flavours->getAllFlavoursSearch($search);
foreach ($content as $con) {
$html .= '<li><a href="">'.$con['flavour_name'].'-'.$con['flavour_company'].'</a></li>';
}
$html .= '</ul>';
echo $html;
}
}
?>
我没有测试过,但是这样的话,也许你必须检查查询是否返回一个数组。
问候。