在 codeigniter 中使用 AJAX 从视图调用控制器函数并从 db 检索行
Posted
技术标签:
【中文标题】在 codeigniter 中使用 AJAX 从视图调用控制器函数并从 db 检索行【英文标题】:calling controller function from view and retrieving rows from db using AJAX in codeigniter 【发布时间】:2015-06-04 06:57:07 【问题描述】:我正在尝试通过对控制器函数进行 AJAX 调用来从数据库中检索行。我没有错误消息,并且代码可以正常执行 $("#msgbox").html("Type the name of someone or something...");
我认为控制器没有从视图中正确调用。下面是我的 MVC 代码。
我的看法:welcome_message.php
<div id="centersearch">
<script type="text/javascript" src="http://ajax.googleapis.com/
ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function()
var start=/^((?!PART).)*$/
var word=/^((?!PART).)*$/
$("#contentbox").live("keyup",function()
var content=$(this).text(); //Content Box Data
var go= content.match(start); //Content Matching @
var name= content.match(word); //Content Matching @abc
var dataString = 'searchword='+ name;
//If @ available
if(go.length>0)
$("#msgbox").slideDown('show');
$("#display").slideUp('show');
$("#msgbox").html("Type the name of someone or something...");
//if @abc avalable
if(name.length>0)
$.ajax(
type: "POST",
url: "<?php $this->load->helper('url'); echo base_url();?>index.php/Welcome/ ?>", // Database name search
data: dataString,
cache: false,
success: function(data)
$("#msgbox").hide();
$("#display").html(data).show();
);
return false();
);
//Adding result name to content box.
$(".addname").live("click",function()
var username=$(this).attr('title');
var old=$("#contentbox").html();
var content=old.replace(word," "); //replacing @abc to (" ") space
$("#contentbox").html(content);
var E="<a class='red' contenteditable='false' href='#' >"+username+"</a>";
$("#contentbox").append(E);
$("#display").hide();
$("#msgbox").hide();
);
);
</script>
我的控制器:Welcome.php
public function search()
$this->load->database();
//load the model
$this->load->model('select');
//load the method of model
$data['s']=$this->select->search();
$this->load->view('welcome_message', $data);
我的模型:Select.php
public function search($datastring)
$query = $this->db->select('*')
->from('country')
->where('from', $datastring)
->get();
return $query;
【问题讨论】:
在ajax中简单使用url: "<?php echo base_url();?>index.php/welcome/search ?>",
【参考方案1】:
你可以在你的构造函数中调用你的助手
function __construct()
parent::__construct();
$this->load->helper('url');
你的 ajax 网址是
url: "<?php echo base_url();?>index.php/Welcome/search?>",
【讨论】:
【参考方案2】:您应该在类的构造函数中包含 URL 帮助器。
function __construct()
parent::__construct();
$this->load->helper('url');
看起来你在 CI 上,所以除非你指定了一个路由,否则你的 ajax URL 是不正确的。
<?php echo base_url();?>index.php/welcome/search ?>
【讨论】:
【参考方案3】:在PHP
代码本身的上方某处加载url helper
,就像在controller
的constructor function
中一样
url: "<?php $this->load->helper('url'); echo base_url();?>index.php/Welcome/ ?>"
==> 这行写错了
这就是你的 ajax 请求应该是这样的
$.ajax(
type: "POST",
url: "<?php echo base_url();?>index.php/Welcome ?>", // Database name search
data: dataString,
cache: false,
success: function(data)
$("#msgbox").hide();
$("#display").html(data).show();
);
【讨论】:
【参考方案4】:在你的控制器中加载 url helper
$this->load->helper('url');
并将其用于您的 ajax 调用。
url: "<?php echo site_url('welcome');?>",
请参考本文档 http://www.codeigniter.com/userguide3/helpers/url_helper.html#site_url
【讨论】:
【参考方案5】:如果你想调用当前控制器的函数,你必须通过以下方式创建当前控制器的实例:
<?php
$CI =&get_instance();
$CI->method($param);
?>
【讨论】:
以上是关于在 codeigniter 中使用 AJAX 从视图调用控制器函数并从 db 检索行的主要内容,如果未能解决你的问题,请参考以下文章
Codeigniter- Ajax Codeigniter Ajax - 通过ajax返回不止一行
使用 jquery / ajax 在 CodeIgniter 的控制器中调用函数
在 CodeIgniter 中使用 AJAX 从数据库中获取单行?
如何在codeigniter中使用ajax在mysql数据库中插入数据?