使用 ajax 调用 CodeIgniter 模型
Posted
技术标签:
【中文标题】使用 ajax 调用 CodeIgniter 模型【英文标题】:call CodeIgniter Model with ajax 【发布时间】:2016-09-27 14:28:06 【问题描述】:我试图在我的一个模型中调用一个函数,但我想在不通过控制器的情况下这样做,这可能吗?
下面提供的代码不起作用,我得到404 Not Found
$.ajax(
type: "POST",
url: "/myApplication/usersModel/get_cash_player",
success: function(result)
alert("ok");
);
我的模型(位于 usersModel.php 中):
public function get_cash_player()
$currentUserID = $this->usersModel->get_user_id();
$query = $this->db
->select('cash')
->from('users')
->where('id_player', $currentUserID)
->get();
return $query->row('cash');
或者,我可以创建一个控制器来调用模型中的方法,但我想知道这个快捷方式是否可行。
更新 1:
好的,现在来下一个问题。对于我的某些控制器,我正在使用自定义 Helper,因为我希望它们在多个控制器中可用。通过 PHP 调用它们时效果很好,但是我可以为上面提到的 get_cash_player
控制器(以及在 cmets 中)创建一个并通过 Ajax 调用它吗?
我试过了,但还是找不到:
if(!function_exists('get_cash_player'))
function get_cash_player()
$ci=& get_instance();
$cash = $ci->usersModel->get_cash_player();
return $cash;
【问题讨论】:
这种快捷方式在 CI MVC 方法中是不可能的。这是因为 AJAX 的 url 属性试图达到example.com/controller_name/method_name/param
。出于安全原因,无法通过网络浏览器访问其他应用程序代码。
“或者我可以创建一个控制器来调用模型中的方法,但我想知道这个快捷方式是否可行。”这就是你必须/应该做的。模型不能(或不应该)从浏览器(AJAX 与否)访问,即您的数据层。
【参考方案1】:
直接调用模型是不可能的,控制器总是处理视图和模型之间的过程。这是正确的 Codeiginter MVC 方法,
来源:https://www.codeigniter.com/user_guide/overview/appflow.html
这个链接也可以帮助你 https://www.codeigniter.com/user_guide/overview/mvc.html
但是,您可以这样做:使用您的 ajax 函数调用控制器函数来传递数据。控制器将使用模型处理该过程,并将数据返回给 ajax 函数。
【讨论】:
【参考方案2】:没有。这不可能。所有传入的服务器请求都被路由到控制器。
【讨论】:
以上是关于使用 ajax 调用 CodeIgniter 模型的主要内容,如果未能解决你的问题,请参考以下文章
判断帖子是不是来自codeigniter中的ajax调用的方法?