使用 ajax 调用 CodeIgniter 模型

Posted

技术标签:

【中文标题】使用 ajax 调用 CodeIgniter 模型【英文标题】:call CodeIgniter Model with ajax 【发布时间】:2016-09-27 14:28:06 【问题描述】:

我试图在我的一个模型中调用一个函数,但我想在不通过控制器的情况下这样做,这可能吗? 下面提供的代码不起作用,我得到404 Not Found

javascript

$.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调用的方法?

使用 jquery / ajax 在 CodeIgniter 的控制器中调用函数

Codeigniter 中的 Ajax 调用

Codeigniter 会话因 ajax 调用而出错

在 ajax 调用后加载视图,CodeIgniter

使用ajax在codeigniter控制器中调用函数不起作用