2012-11-02 44 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面板中的數據,並檢查您的控制檯用於調試錯誤。