我有一個php/mysql後端和一個引導程序/ jQ前端。還有一個4小時的頭痛。twitter引導問題2.3.2 typeahead無法正常工作
的表單元素看起來是這樣的:
<input id="location_name" name="location_name" data-provide="typeahead"
autocomplete="off" type="text" placeholder="Location name"
class="input-xlarge" required="yes" value="" />
jQuery的是這樣的:
$(document).ready(function(){
$('#location_name').typeahead({
'source': function (query,typeahead) {
var id = $("#area_id option:selected").attr('value');
return $.get(
'/app/event/location_name_typehead.php',
{ 'location_name': encodeURIComponent(query), 'area_id' : id },
function (data) { return data; }
);
},
'items': 4,
'minLength': 2
});
});
而且PHP是這樣的:
<?php
header('Content-type: text/json');
$location_name = $_REQUEST['location_name'];
$area_id = $_REQUEST['area_id'];
//print_r($_REQUEST);
// ... PDO setup ...
$locations = $location_recs->fetchAll(PDO::FETCH_ASSOC);
if(count($locations) == 0) {
echo '[]';
} else {
foreach ($locations as $location) {
$names[] = $location['location_name'];
}
echo '[ "'.implode('", "', $names).'" ]';
};
?>
我用盡全力'application/json'和'text/json'作爲返回類型,並使用typeahead.process(data)
和jQuery j的變體對數據進行兒子解碼以使該死的東西起作用。正在返回的搜索結果,即輸入領域觸發Ajax調用,並且文檔返回看起來是正確的:
[ "Administration Block", "Science Block" ]
誰能指出,攔着它的區分明顯(我認爲)的語法問題?
您在輸入屬性中錯過了'data-provide =「typeahead」'。那是一回事。我會看看我能否找到更多。 – SSaaM
:-)是的,我已經有過幾次。我把它放回去了,並且修改了頂部的代碼 - 但仍然沒有快樂。 – Dycey
建議的話,***不要建立你自己的JSON!使用PHP的'json_encode'。很簡單:'echo json_encode($ names);'。 –