2013-10-28 36 views
0

使用typeahead,似乎無法使用PDO獲取結果。用我有限的英語看了最好的我可以找到解決方案,也許我在PHP中做錯了什麼?這裏是擊穿:Typeahead.js JSON,PDO問題

使用typehead.js和引導3.

HTML:

<input type="text" class="seek typeahead" id="seekInput" placeholder="Search" /> 

JS:

$(document).ready(function() { 
     $('.seek.typeahead').typeahead({                               
          name: "seek",                
     remote: 'include/search.php?store=%QUERY' 
    }); 
}); 

的search.php並在我試圖生成陣列:

require_once ('konnekt.php'); 

$query = $db->prepare("SELECT store FROM retailers WHERE store or country LIKE :country"); 
$country = (isset($_POST['query']) === true) ? $_POST['query'] : ''; 
$query->bindValue(':country', '%' . $country . '%'); 
$query->execute(); 
foreach ($query->fetchAll(PDO::FETCH_ASSOC) as $row) { 
    $array[] = $row; 
} 
echo json_encode($array); 

這裏是我的就是我的瀏覽器說:

狀態200

響應:[{"store":"Aplace"},{"store":"Aplace"},{"store":"Design Only"}]

請告訴我直播內容:

Undefined

+0

您是否已將%QUERY替換爲輸入字段中的值? –

+0

您可以重寫''%'。 $國家。 '%''爲'%{$ country}%「'。 – Leo

回答

0

開箱,typeahead.js會渲染<p/>使用默認數據格式的標籤,可以像字符串數組一樣簡單:

[ 
    "Aplace", 
    "Aplace", 
    "Design Only" 
] 

這些字符串將自動轉換爲datums,這是定義數據如何顯示以及查詢如何與數據匹配的格式的前導名稱。

這裏是你將如何輸出在PHP中的字符串數組,使用原來的例子:

require_once ('konnekt.php'); 
$result = array(); 
$query = $db->prepare("SELECT store FROM retailers WHERE store or country LIKE :country"); 
$country = (isset($_POST['query']) === true) ? $_POST['query'] : ''; 
$query->bindValue(':country', '%' . $country . '%'); 
$query->execute(); 
foreach ($query->fetchAll(PDO::FETCH_ASSOC) as $row) { 
    $result[] = $row["store"]; 
} 
echo json_encode($result); 

如果您希望繼續使用store作爲關鍵的數據,您可以:

  • 設置valueKey參數在原來的預輸入定義:

    $('.seek.typeahead').typeahead({        
        name: "seek",     
        remote: 'include/search.php?store=%QUERY', 
        valueKey: 'store' 
    }); 
    

然後又返回所需tokens屬性每個數據:

[ 
     { 
     "store": "Aplace", 
     "tokens": ["Aplace"] 
     }, 
     { 
     "store": "Aplace", 
     "tokens": ["Aplace"] 
     }, 
     { 
     "store": "Design Only", 
     "tokens": ["Design", "Only"] 
     } 
    ] 

注意,令牌是單個單詞,這是使用預輸入到符合您對查詢的實際值陣列。

+0

感謝您的回覆!它幫助我更好地理解。如何最好地使用PHP來實現這個來自mysql的調用數據?我仍然遇到麻煩。 – SethCodes

+0

我剛剛添加了PHP *應該*爲你的例子工作,告誡實際數據 –

+0

這個例子確實工作,問題是現在它不會丟棄必須引用的結果,它只是列出數組,自動完成結果是沒有縮小,因爲我輸入.. – SethCodes