2012-11-02 43 views
0

我想用我的数据库使用jquerys自动完成,但我不知道如何从我的PHP脚本中返回数据作为自动完成的选项。从数据库的JQuery UI自动完成

这是我目前所面对的基于另一个论坛上发帖:

$('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,但无济于事。

如何让它工作?

回答

0

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

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

1)什么是系统根的根?你没有在任何地方定义它。

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

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

if($mode == 'ENTITY_AUTOCOMPLETE')

3)在此行中访问您这是没有定义$mode /声明。通常用GET请求,你会检查与$_GET['mode']但在你的情况下,它不会在那里,因为你已经搞砸了您的通过(2提到)

打开NET面板中的数据,并检查您的控制台用于调试错误。