【问题标题】:Jquery Array - AJAX PHP Autocomplete inputJquery Array - AJAX PHP 自动完成输入
【发布时间】: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 的知识,不过谢谢

标签: php arrays ajax


【解决方案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;
            }

    }
?>

我没有测试过但是是这样的,也许你必须检查查询是否返回一个数组。

问候。

【讨论】:

  • 太棒了.. 非常感谢,这对我很有帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多