我有一个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);'。 –