codeigniter代码中的Ajax自动搜索不起作用

时间:2015-07-24 08:04:25

标签: php jquery ajax codeigniter

控制器代码:

public function auto_search() {

    $search_data = $this->input->post('search_data');
    //print_r($search_data);  die();
    $query = $this->search_model->autocomplete($search_data);
    print_r($query);  die();

    foreach ($query->result() as $row):
        echo $row->uid  ;
        echo  $row->name ;
    endforeach; 
}   

javascript:

<script type="text/javascript" src="js/jquery-1.8.0.min.js"></script>
<script type="text/javascript">
    function ajaxSearch() {

        var input_data = $('#search_data').val();

        $.ajax({
              type: "POST",
              url: "/search/auto_search",
              data: {search_data:input_data},
              success: function(data1) {
              alert(data1);

                if (data1.length > 0) {
                   $('#suggestions').show();
                   $('#autoSuggestionsList').addClass('auto_list');
                   $('#autoSuggestionsList').html(data1);
                }
              }
          });
    }
</script>

在控制器中,当我打印print_r($search_data); die();的search_data时,我没有得到任何结果。 我认为ajax调用不是进入控制器请为此提供解决方案

此外,当我在控制器中回显print_r($query) ;的查询时,我没有得到任何结果。自动搜索也无效。请为此提供解决方案。

2 个答案:

答案 0 :(得分:0)

我认为它是ajaxSearch函数没有运行。 你的尝试

public function auto_search()
{

    $search_data = $this->input->post('search_data');
    $query = $this->search_model->autocomplete($search_data);

    if (!empty($query)) {
        foreach ($query->result() as $row) {
            echo $row->uid;
            echo $row->name;
        }
    } else {
        echo '';
    }
}
<script type="text/javascript" src="js/jquery-1.8.0.min.js"></script>
<script type="text/javascript">
    $(function () {
        function ajaxSearch() {

            var input_data = $('#search_data').val();

            $.ajax({
                type: "POST",
                url: "/search/auto_search",
                data: {search_data: input_data},
                success: function (data1) {
                    alert(data1);

                    if (data1.length > 0) {
                        $('#suggestions').show();
                        $('#autoSuggestionsList').addClass('auto_list');
                        $('#autoSuggestionsList').html(data1);
                    }
                }
            });
        }

        // start ajaxSearch
        ajaxSearch();
    });

</script>

谢谢

答案 1 :(得分:0)

您需要将所有ur数据传递到数组中,然后将其转换为json_encode以获取有关编码的更多参考 - &gt; Live demo ..

这是您的示例代码。

$.ajax({
          type: "POST",
          url: "/search/auto_search",
          data: {search_data:input_data},
          success: function(data1) {
          console.log(data1);
          console.log(data1.keyname);
          console.log(data1.keyname1);

            if (data1.length > 0) {
               $('#suggestions').show();
               $('#autoSuggestionsList').addClass('auto_list');
               $('#autoSuggestionsList').html(data1);
            }
          }
      });

在你的jquery。

db.getCollection('players')
.find({'ratings.gameRatingType' : 'standard', 'ratings.rating' : { $gt: 234, $lt: 235 } })

试着看看你是浏览器控制台面板。并查看函数中检索到的数据,并尝试检查您的ajax网址是否正确。