【问题标题】:Jquery UI Autocomplete from Database来自数据库的 Jquery UI 自动完成
【发布时间】:2012-10-22 21:20:39
【问题描述】:

我正在尝试对我的数据库使用 jquerys 自动完成功能,但我不知道如何从我的 php 脚本中返回数据作为自动完成的选项。

这是我目前根据另一篇论坛帖子得出的结论:

$('input#transferto').autocomplete({
                source: function(request, response)
                {
                    alert('{"term": "'+request.term+'", "mode": "ENTITY_AUTOCOMPLETE"}');
                    $.ajax({
                        url: SYSTEM_ROOT+'/assets/controllers/global.php',
                        data: 'dataString={"term": "'+request.term+'", "mode": "ENTITY_AUTOCOMPLETE"}',
                        success: function(data)
                        {
                            //alert(data);
                            //data = $.parseJSON(data) ;
                            response($.map(data, function(item) {
                                return{
                                    label: item.user_login_name,
                                    value: item.user_id
                                }
                            }))
                        }
                    })
                },
                minLength: 3,
                datatype: 'json',
                cache: false,
                delay: 500,

在我的 php 文件中:

if($mode == 'ENTITY_AUTOCOMPLETE')
{
    $query = trim(strip_tags($JSON->term));
    $q = $query.'%' ;
    $result = $dbh->prepare("SELECT id, name FROM entity_details WHERE name LIKE ?") ;
    $result->execute(array($q)) ;

    //$data = '{' ;
    //while($row = $result->fetch(PDO::FETCH_ASSOC)) {
        //foreach($row as $key => $val)
            //$data .= '"'.$key.'": "'.rawurldecode($val).'", ' ;
    //}
    //$data = substr($data, 0, strlen($data)-2).'}' ;
    $data = $result->fetchAll(PDO::FETCH_ASSOC) ;
    echo print_r($data) ;
}

如您所见,我尝试只返回一个数组并尝试 JSON,但无济于事。

如何让它发挥作用?

【问题讨论】:

    标签: jquery mysql ajax json autocomplete


    【解决方案1】:

    您阅读过文档吗? http://api.jquery.com/jQuery.ajax/

    url: SYSTEM_ROOT+'/assets/controllers/global.php',

    1) SYSTEM_ROOT 根是什么?你没有在任何地方定义这个。

    data: 'dataString={"term": "'+request.term+'", "mode": "ENTITY_AUTOCOMPLETE"}',

    2) 传递数据字符串的方式是不必要的。正如 jquery 文档指定的那样,如果还不是字符串,则将其转换为查询字符串并附加到 GET 请求的 url。如果你使用一个对象,它必须是一个键/值对。同时,您正在尝试将查询字符串中的对象作为字符串填充。

    if($mode == 'ENTITY_AUTOCOMPLETE')

    3) 在这一行上,您访问的 $mode 未定义/声明。通常使用 GET 请求时,您会使用 $_GET['mode'] 进行检查,但在您的情况下,它不会存在,因为您弄乱了传递的数据(在 2 中提到)

    打开 NET 面板并检查您的控制台是否存在要调试的错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-21
      • 2013-11-25
      • 2018-12-31
      • 2014-10-22
      • 2014-10-22
      • 1970-01-01
      • 2011-06-23
      相关资源
      最近更新 更多