使用ajax和codeigniter删除空格并清空搜索

时间:2015-03-21 06:34:23

标签: jquery ajax codeigniter

当我只使用jQuery Ajax函数从数据库获得结果时,我面临的问题,当我给空间并删除空间我返回数据库的所有结果请帮助如何解决这个问题。 这是我的HTML

<div class="col-md-6 col-md-offset-3 search">
            <div class="input-group">
              <input type="text" id="search" data-action="<?php echo site_url('home/search') ?>" class="form-control" placeholder="Search for lectures">
              <span class="input-group-btn">
                <button class="btn btn-default "  type="button">Go!</button>
              </span>
            </div><!-- /input-group -->         

        <div id="user_serach"></div>
        </div> 

这是我的jquery代码

  $('#search').keyup(function(){
        var user_search  =  $('#search').val();
            if(user_search == ''){
                    $('#user_serach').text('');
            }
                $.ajax({
                    url: $(this).data('action'),
                    type: 'POST',
                    data: {
                        user_search:user_search
                    },
                    success:function(data)
                    {
                            $('#user_serach').html(data).css('display','block');
                    },
                    error:function()
                    {
                        $('#user_serach').text('Some thing wrong..').css('color','red');
                    }
                });//ajax ends here

//search key up ends here
    });

这是我的控制器

public function search()
{
     $data['video_name'] = $this->input->post('user_search',TRUE);
     $data['search'] = $this->mod_home->get_search($data);
     if ($data['search']->num_rows() > 0 )
     {
         echo $this->load->view('home/search',$data);
     }

}

这是我的模特

public function get_search($data)
{
    return $this->db->select('*')->from('videos')->like('video_name',$data['video_name'])->get();
}

这是我的观点

<div class="search_div">
    <?php foreach($search->result() as $row): ?>
    <a href="<?php echo site_url('videosd/video')?>?shakzee=<?php echo $row->video_id?>&id=<?php echo $row->course_id?>">
    <div><?php echo $row->video_name ?></div></a>
    <?php endforeach ?>
</div>

2 个答案:

答案 0 :(得分:0)

在将结果发送到控制器之前调整结果

如果要删除空格,可以使用jquery的 $。trim()功能。 我想这就是你想要的     var user_search = $ .trim($(&#39;#search&#39;)。val());

在选择查询之后,运行以下命令并检查这是否是您需要的查询。

print_r($this->db->last_query());

LIKE&#39; %%&#39;匹配任何给定的字符串,甚至是零ength的字符串。这就是为什么你从数据库中获得所有结果

您需要做的只是一个简单的验证

<input type="text" id="search" data-action="<?php echo site_url('home/search') ?>" class="form-control" placeholder="Search for lectures" required>

使用html5必需属性,这将使用户明确提交带有文字的表单

从后端,您可以使用验证类的codeigniter来检查该值是否为空,然后您可以在不执行查询的情况下抛出错误

http://www.codeigniter.com/user_guide/libraries/form_validation.html

答案 1 :(得分:0)

这可能会对你有用

public function get_search($data)
    {
        if(strlen(trim($data['video_name']))>0)
        {
            return $this->db->select('*')->from('videos')->like('video_name',$data['video_name'])->get();    
        }
        else
        {
            return array();/basically it should be return null;but null will produce your view script error.
        }

    }