使用AJAX调用在自动完成中将变量值从一个函数传递到另一个函数

时间:2014-07-27 16:19:28

标签: javascript php jquery ajax

我在使用自动完成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有什么错误吗?

1 个答案:

答案 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