繁体   English   中英

如何从 jquery 调用控制器?

[英]How do I call a controller from jquery?

我正在尝试从我的 js 脚本(使用 jquery)调用控制器(我使用的是 codeigniter),但它比我预期的要难。

控制器功能旨在从数据库中删除某些项目。 为此,我只需使用 jquery 的 post 或 get 调用该函数(我都尝试过)。

由于我使用的是 codeigniter,因此我认为最简单的方法是通过 URL 传递参数,然后将它们放入控制器 ($this->uri->segment(NUMBER);)

所以我的 get 请求看起来像这样:

$.get('my_function/'+item_id);

my_function 在我调用它的同一个控制器中,所以 URL 没有问题(我澄清了这一点,因为起初我写了整个 /index.php/my_controller/my_function 并抛出了一个错误)

就像我说的, my_function 是为了删除一个项目,但它没有这样做,因此我决定通过在函数的最开始写下这个来检查我的脚本是否正在调用 my_function :

echo 'hello';exit;

但是 'hello' 永远不会出现,这仅意味着没有调用该函数。

我记得很多年前我让这个 jquery/codeigniter 组合工作,所以我在这里做错了一些事情,我不知道它是什么。

在此先感谢您的帮助。

修改:更多信息:当用户点击某种类时,我触发 $.get() 方法

$('.my_class').click(function(){
$.get('my_function');
});

你应该使用:

var url = "<?php echo base_url('name_of_controller/my_function/'); ?>"+item_id;
$.get(url);

(如果您从 .htaccess 中删除了“index.php”,这将起作用)。 您可以使用 firebug 检查调用的 URL 并检查它是否是您想要的,但我总是使用 $.get() 和 $.post() 来使用这种方式。

更新

试试这个,这是一个应该可以工作的简单示例,如果不起作用,请共享 .htaccess 文件和以下输出:

JS:

<script type='text/javascript'>
    $(document).ready(function(){
        var url = "<?php echo base_url('test/hello_function'); ?>";

        $('.class').click(function(e){              
            e.preventDefault();
            $.get(url,function(data){
                alert(data);
            });
        });
    });
</script>

CI:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed: login');   
class Test extends CI_Controller {

    function __construct(){
        parent::__construct();
    }

    function hello_function(){
        echo "HELLO!!!";
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM