【问题标题】:Accessing page directly by URL shows blank page in codeigniter search通过 URL 直接访问页面在 codeigniter 搜索中显示空白页面
【发布时间】:2017-05-17 06:01:10
【问题描述】:

我正在做一个项目,如果我尝试搜索查询,它会显示结果,但如果我尝试通过相同的 URL 访问同一页面,它会显示空白页面。任何帮助将不胜感激。谢谢!

我的控制器

这是我的搜索功能

public function search($keyword = "default", $city = "NULL")
    {

            $keyword = $this->input->get();

            $data['city_name']  =   $keyword['city'];
            $data['service_name']   =   str_replace('-',' ',$keyword['search']);
            //echo "<pre>";print_r($data); die('kk');

// get sponsor data by city

    $data['sponsor']    =   $this->Home_model->getSponsor($keyword['city']);

            $data['packercontent'] =    $this->Home_model->getPackerContent($keyword['city']);
            $data['packers']  = $this->Home_model->get_results($keyword);
            //echo "<pre>";print_r($keyword);die;
            $data['info']           =   $this->Home_model->getSiteInfo();

            $data['page']   =   '';
            $this->load->view('viw_packers', $data);


    }

我的模态

     // get all packers according to city
     public function get_results($keyword = 'default')
      {

        $this->db->select('*');
        $this->db->like('service', str_replace('-',' ',$keyword['search']));
        $this->db->where('city', $keyword['city']);
        $query  = $this->db->get('pf_package');

        return $query->result();
      }

// get all sponsor according to city
      public function getSponsor($city)
      {
        $this->db->select('*');
        $this->db->where('sp_city',$city);
        $this->db->from('pf_sponsor');
        $query = $this->db->get();

        return $query->row();
      }

// get all packer content according to city
      public function getPackerContent($city)
      {
        $this->db->select('*');
        $this->db->where('city',$city);
        $this->db->from('pf_packers_content');
        $query = $this->db->get();

        return $query->row();
      }

我的视图文件

  <form class="form-inline" id="myForm" method="get" action="">
          <div class="form-group row nomargin">
                                <div class="servicewrap col-lg-5 col-md-5 col-sm-5 col-xs-12 nopadding">
              <select class="form-one-class" name="search" id="service">
               <option value="moving-locally">Moving Locally</option>
               <option value="moving-overseas">Moving Overseas</option>
               <option value="corporate-relocation">Corporate Relocation</option>
               <option value="commercial-relocation">Commercial Relocation</option>
               <option value="packaging-services">Packaging Services</option>
               <option value="storage-services">Storage Services</option>
             </select>
                                </div><!-- /.servicewrap -->

                                <div class="citywrap col-lg-5 col-md-5 col-sm-5 col-xs-12 nopadding">
                                    <input type="text" class="form-control" id="city" name="city" autocomplete="off" placeholder="select city">
              <div id="category-suggestions">
                   <div class="suggestions col-xs-12" id="category-autoSuggestionsList">

                   </div>
              </div>
            </div><!-- /.citywrap -->
                                <div class="buttonwrap col-lg-2 col-md-2 col-sm-2 col-xs-12 nopadding">
                                    <button type="submit" class="btn btn-default" id="search-button" >search</button>
                                </div><!-- /.buttonwrap -->
                            </div>
                        </form>

这是我的 js 代码

我通过 js 调用我的搜索表单操作。

<script>
$(document).ready(function(){
  $("#search-button").click(function(e){
    var city = $("#city").val();
    var lowerCity = '-'+city.toLowerCase();
    document.getElementById("myForm").action = "<?php echo base_url('search/packers-and-movers-in'); ?>"+lowerCity;
  });
});

</script>

【问题讨论】:

  • 很简单,因为你使用的是post请求,如果你直接点击url,你的$_POST是空的,你只会得到空白页。尝试使用$_GET参数代替$_POST,你会得到结果。
  • 感谢@kishor10d 的回复。我会试试这个。
  • @kishor10d 现在可以工作了,但我想显示这样的网址 localhost/profilehome/search/packers-and-movers-in-jaipur,而不是 localhost/profilehome/search/…
  • 现在我想从我的网址中删除这个 ?search=moving-locally&city=Jaipur
  • 我认为你弄错了框架,它支持漂亮的 url,而不是查询字符串,直到你更改配置。你可以通过漂亮的网址来做这件事。您只需从 url 串行获取输入,然后将它们发送到查询中比较 localhost/profilehome/search/packers-and-movers-in-jaipur/…

标签: forms codeigniter search


【解决方案1】:

这是你的控制器功能

public function search($keyword = "default", $city = NULL)
{
$data["sponcer"] = $this->your_model->searchByKeyword($keyword);
$data["packerContent"] = $this->your_model->searchByKeyword($city);

$this->load->view("yourview", $data);
}

这只是演示代码,您需要根据自己的需要进行构建。你真的不需要$_GET 来从查询字符串中获取值。

如果您编写上面的代码,那么您的网址如下: http://localhost/profilehome/search/packers-and-movers-in-jaipur/Jaipur

在此处查看文档: https://www.codeigniter.com/user_guide/general/urls.html

【讨论】:

  • 还有其他方法吗?我使用 javascript 删除了获取参数,但现在当我再次访问相同的 url 时 url 不再工作。请帮助我完成这项工作。感谢您的宝贵回答。
  • 通过javascript删除get参数有什么意义?你仔细阅读文档了吗?
  • 通过javascript删除get参数的唯一一点是为我的网站获取一个干净的url。我已经完成了文档,如果我错过了有关此特定主题的任何具体内容,请告诉我。
  • 你能否更新你的代码本身,你在我回答后尝试了什么?
  • 我已经更新了我的代码。这是我在您回答后现在使用的原始代码。请帮助我,我是 ci 的新手,我还没有经验。我不知道该怎么做。任何帮助,将不胜感激。谢谢
猜你喜欢
  • 1970-01-01
  • 2016-05-29
  • 2018-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多