【发布时间】:2017-01-09 16:21:24
【问题描述】:
我想在 ajax 结果之后或之后设置两件事:这个输入标签的值:
<input type="text" id="typeahead" name='name' placeholder='Name' class="form-control" data-provide="typeahead" autocomplete="off" />
和<li>标签列表在这个<ul>:
<div class="dropdown">
<button class="btn btn-default dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
test label
<span class="caret"></span>
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownMenu1" id="name-dates-dropdown">
<li>test</li>
</ul>
</div>
想法是这样的:我在#typeahead 输入标签上得到一个ajax 结果列表(这很好用),如果我点击任何结果列表,这个项目被设置为这个文本输入的VALUE 并且另一个 ajax 请求被触发(这也有效),第二个 ajax 请求(li 列表)的结果被设置为新的 #name-dates-dropdown innerHTML。遗憾的是没有一个设置功能起作用,我不知道为什么...... :(
我正在使用 Bootstrap 和 Bootstrap typeahead。
这是我的 jQuery 函数:
<script type="text/javascript">
$(document).ready(function() {
$('#typeahead').typeahead({
source: function (query, process) {
$.ajax({
url: '/functions/name-autocomplete.php',
type: 'POST',
dataType: 'JSON',
data: 'query=' + query,
success: function(data) {
process(data);
}
});
},
displayText: function(item) {
return item
},
updater: function (item) {
$('#typeahead').val(item.value);
$.ajax({
url: '/functions/name-dates-autocomplete.php',
type: 'POST',
dataType: 'JSON',
data: 'query=' + item,
success: function(data) {
$('#name-dates-dropdown').html(data);
}
});
}
});
});
</script>
非常感谢!
【问题讨论】:
-
响应是第二个ajax调用“/functions/name-dates-autocomplete.php”JSON吗?如果是,那么它是如何格式化的。很可能你必须遍历这个 JSON 数组并以此构建 HTML
-
现在它不是 JSON,但我可以在 PHP 端快速更改它。您能否发布一些示例如何循环抛出并将其添加到 ul 列表中?我不是很喜欢 JS 和 jQuery。你知道为什么 $('#typeahead').val(item.value);不工作吗?谢谢!
标签: javascript jquery html ajax twitter-bootstrap