Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用代码点火器的Ajax自动完成搜索_Php_Jquery_Ajax_Codeigniter - Fatal编程技术网

Php 使用代码点火器的Ajax自动完成搜索

Php 使用代码点火器的Ajax自动完成搜索,php,jquery,ajax,codeigniter,Php,Jquery,Ajax,Codeigniter,从我的数据库中使用代码点火器进行Ajax自动完成搜索。我正在尝试搜索我的数据库,Ajax完成了对数据库中保存的项目的搜索。我相信我错过了一个简单的技巧。也许我在写我的控制器,也许一切都错了。。。代码如下 //查看页面 位置路径:应用程序/视图/模板/标题 <form class="navbar-form" > <input type="text" id="mysearch" placeholder="search" onkeyup

从我的数据库中使用代码点火器进行Ajax自动完成搜索。我正在尝试搜索我的数据库,Ajax完成了对数据库中保存的项目的搜索。我相信我错过了一个简单的技巧。也许我在写我的控制器,也许一切都错了。。。代码如下

//查看页面 位置路径:应用程序/视图/模板/标题

<form class="navbar-form" >
                        <input type="text" id="mysearch" placeholder="search" onkeyup="doSearch();">                        
                        <br />



//这是jQueryAjax调用
函数doSearch()
{
$.ajax({
键入:“获取”,
url:“localhost/codeigniter/index.php/ajax/getdata/”+$(“#mysearch”).val(),
成功:功能(结果){
$(“#搜索结果”).html(结果);
}});
}
//课例
注意:我的表格或搜索框在我的标题内。。。因此,我的视图页面位于模板/标题中
//控制器页
位置路径:codeigniter/application/controller/ajax.php
类Ajax扩展了CI_控制器
{
公共函数构造()
{
父项::_构造();
$this->load->model('ajax_model');
//$this->load->helper('url_helper');
}
公众活动表格()
{
$data['title']='Ajax搜索';
$this->load->view('template/header');
}
//功能结束
公共函数getdata($param='')
{
//从数据库获取数据
$data['ajaxdata']=$this->ajax\u model->search($param);
//将数据传递给视图
$this->load->view('template/header',$data);
}
}
?>
//我的模型 位置路径:application/model/Ajax\u model.php

<?php if (! defined('BASEPATH')) exit('No direct script access');

class Ajax_model extends CI_Model
{
    public function __construct()
        {
                $this->load->database();
        }

    public function search ($title){
        $this->db->select('title');
        $this->db->select('text');
        $this->db->like('title', $title, 'both');
        return $this->db->get('news');
    }

}

?>

请注意,我是CodeIgniter的新手。这解释了我相当明显的无知

试着改变这一点

$this->load->view('template/header', $data);


Ajax方法需要(JSON)字符串形式的数据。所以您不需要再次加载标题。相反,只需从DB传递所需的数据,jQuery就会将其放在指定的位置。在本例中,输入id为searchresults的元素。

如果我清楚您需要什么,请尝试: 首先定义ajax请求类型:

function doSearch()
   {
      $.ajax({
         type: "GET",
         dataType:"html",
         url:"localhost/codeigniter/index.php/ajax/getdata/" + $("#mysearch").val(),
         success:function(result){
         $("#searchresults").html(result);
      }});
   }
然后在控制器中:

只是附和你的观点:

$auto_complete_html = $this->load->view('template/header', $data,TRUE);
echo $auto_complete_html;
//good practice always die(); after ajax called 
die();

尝试在AJAX中使用POST而不是GET:

<script>

   // This is the jQuery Ajax call
   function doSearch()
   {
      var search = $("#mysearch").val()
      $.ajax({
         type: "POST",
         url:"localhost/codeigniter/ajax/getdata/",
         data:'search=' + search,
         success:function(data){
         $("#searchresults").html(data);
      }});
   }
   //class example

</script>

我试过你的建议,但它确实改变了我的结果。谢谢,但没有从我的数据库返回数据,而是我得到了这个{“conn_id”:{“受影响的行”:null,“客户端信息”:null,“客户端版本”:null,“连接错误”:null,“errno”:null,“error”:null,“field_count”:null,“host_info”:null,“info”:null,“insert_id”:null,“server_version”:null,“stat”:null,“sqlstate”:null,“protocol_version”:null,“thread_id”:null,“warning_count”:null},“result_id”:类似于不带get方法的查询。尝试一下:删除一行select并使用此
$this->db->select('title,text');
。也可以找到。如果我包括“$this->load->view('ajax/index',$data”),则不使用建议的“echo$data['ajaxdata'];”;"在我的控制器中,尝试使用$ajaxdata格式化index.php视图页面中的结果。我如何将其放入循环中?我一直在尝试解决这个问题,并尝试使用for循环,但我可能还是遗漏了一些内容。如果使用ajax获取某些数据,为什么要导出视图文件?因为我希望它以样式显示。我不确定是否可以dif实现因为我对这一切都很陌生
function doSearch()
   {
      $.ajax({
         type: "GET",
         dataType:"html",
         url:"localhost/codeigniter/index.php/ajax/getdata/" + $("#mysearch").val(),
         success:function(result){
         $("#searchresults").html(result);
      }});
   }
$auto_complete_html = $this->load->view('template/header', $data,TRUE);
echo $auto_complete_html;
//good practice always die(); after ajax called 
die();
<script>

   // This is the jQuery Ajax call
   function doSearch()
   {
      var search = $("#mysearch").val()
      $.ajax({
         type: "POST",
         url:"localhost/codeigniter/ajax/getdata/",
         data:'search=' + search,
         success:function(data){
         $("#searchresults").html(data);
      }});
   }
   //class example

</script>
    public function getdata()
   {
$param= $this->input->post('search');
      // Get data from db 
     $result = $this->ajax_model->search($param);

      // Pass data to view
 echo $result; 


   }