我在使用自动完成jQuery和AJAX调用时遇到问题。 当用户在输入字段中输入内容时,我使用AJAX将该值发布到控制器,我从数据库中获取值,然后将所有这些值发送到JavaScript成功消息中。但在那之后,我在使用这些JSON值进行自动完成时遇到了问题。如何解决?
视图文件
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.0/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.0/jquery-ui.js"></script>
<link rel="stylesheet" href="/resources/demos/style.css">
<script>
$(function() {
$("#tags").autocomplete({
source: function( request, response ) {
$.ajax({
type: "POST",
url: "<?php echo base_url().'index.php/search_con/user' ;?>",
data: {'userA': request.term},
success: function(msgs)
{
var a = ["Central Palms Hotel","Hotel Monalisha","asghgjfddas","My hotel added","asdfsdf","asdsadsa"];
response(a);
// alert(msgs);
}
});
}
});
});
</script>
<div class="ui-widget">
<label for="tags">Tags:</label>
<input id="tags">
</div>
和控制器
public function user(){
$userPart = $_POST['userA'];
$result = $this->searchdb->search($userPart) ;
$list = array();
foreach ($result as $finaldata) {
$data= $finaldata->name;
array_push($list, $data);
}
echo json_encode($list);
}
现在我的问题是,当我删除静态变量a并使用msgs进行响应时,自动完成数据中不显示任何内容,并且当警报消息时,我获得与变量a中相同的数据。我的json有什么错误吗?
答案 0 :(得分:0)
您不需要具有单独的功能来获取自动完成的数据,可以像这样完成
$(function () {
$("#tags").autocomplete({
source: function (request, response) {
$.post("<?php echo base_url().'index.php/search_con/user' ;?>", {
userA: request.term
}, response);
}
});
});
由于ajax的 async 性质,你无法做到这一点
$.ajax({
type: "POST",
url: "<?php echo base_url().'index.php/search_con/user' ;?>",
data: dataString,
success: function (msgs) {
data = msgs;
}
});
alert(data); // undefined