Jquery 使用ajax和codeigniter删除空白和空搜索

Jquery 使用ajax和codeigniter删除空白和空搜索,jquery,ajax,codeigniter,Jquery,Ajax,Codeigniter,当我使用jqueryajax函数只提供从数据库中获得的结果的空间时,我面临着一个问题,当我提供空间并删除空间时,我返回数据库中的所有结果,请帮助解决这个问题。 这是我的html <div class="col-md-6 col-md-offset-3 search"> <div class="input-group"> <input type="text" id="search" data-action="<

当我使用jqueryajax函数只提供从数据库中获得的结果的空间时,我面临着一个问题,当我提供空间并删除空间时,我返回数据库中的所有结果,请帮助解决这个问题。 这是我的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> 
这是我的控制器

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>

只需在将结果发送到控制器之前对其进行修剪

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);
     }

}
如果要删除空格,可以使用jquery的$.trim函数。 我想这就是你想要的 var user_search=$.trim$'search'.val

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

print_r($this->db->last_query());
与“%”类似,它匹配任何给定的字符串,即使是长度为零的字符串。这就是为什么您要从数据库中获取所有结果

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

<input type="text" id="search" data-action="<?php echo site_url('home/search') ?>" class="form-control" placeholder="Search for lectures" required>
使用html5 required属性,这将使用户明确地提交带有文本的表单

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


也许这对你有用

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.
        }

    }

你在说什么?你能说得具体一点吗?如果什么都不放,只按空格键,我就从数据库中得到结果。如果我写了要搜索的东西,然后我从搜索栏中删除了所有字符,但现在字符为零,但仍然从数据库中得到了所有结果。我尝试过,但我不知道为什么它不起作用。!另外,当我写了一些要搜索的内容并删除了搜索中的所有字符,但仍然从数据库中获得了所有结果时,这里是最后一个查询SELECT*from videos,其中videos\u name(如“%”请参见..这是您没有指定任何内容的问题。当我编写jquery时,%您的搜索文本%之间应该有一些数据,所以上次查询从视频中生成SELECT*,其中视频名称为“%jquery%”首先,您不必使用$data变量将数据发送到控制器…它用于查看mailny。使用一个简单的变量,例如:$searchtext=$this->input->post'user\u search',TRUE;并将其传递给控制器