繁体   English   中英

jQuery数组-AJAX PHP自动完成输入

[英]Jquery Array - AJAX PHP Autocomplete input

我正在尝试使用AJAX / PHP创建自动完成输入,但是从PHP返回的数组似乎正在破坏它。

想法是让风味名称和风味公司名称显示在用户可以选择的下拉/扩展div中。

将Array返回AJAX成功(数据):

[IMG]

数组为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();
}

我认为您必须在控制器中实现这一目标。 现在,您将返回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;
            }

    }
?>

我没有测试过,但类似这样,也许您必须检查查询是否返回数组。

问候。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM