2016-03-16 99 views
1

我想从我的js脚本(使用jquery)调用控制器(我使用codeigniter),它比我想象的要困难。如何从jquery调用控制器?

控制器功能是为了从数据库中删除一些项目。要做到这一点,我只是使用jquery的帖子调用函数或get(我都尝试过)。

由于我使用的是笨我想做到这一点最简单的方法是通过URL来传递参数,然后让他们在控制器($这个 - > URI->段(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组合的工作,所以有一些我在这里做错了,我不知道它是什么。

在此先感谢您的帮助。

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

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

如何将my_function添加到路由?你没忘记吗?在尝试调用ajax之前,请在浏览器中输入URL来测试URL。 – instead

+0

当您定位到my_function /(item id)时,脚本是否工作? – oMiKeY

+0

当我在浏览器中输入URL去my_function时,它运行得很好,只是说'你好'应该是 – fedejp

回答

1

的你应该使用:

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

(此作品如果你从.htaccess中删除'index.php')。你可以用firebug检查URL调用,并检查它是否是你想要的,但我总是用$ .get()& $ .post()工作。

UPDATE

试试这个,是一个简单的例子,应该工作,如果还是不行,分享.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!!!"; 
    } 
} 
+0

它给了我一个404错误,资源没有找到,显然甚至没有处理PHP。它不会给我404错误的唯一方法是当我单独编写函数的名称时,那是我想要的URL,相信我,我正确地获得了该部分。 – fedejp

+0

好的,这显然是一个URL问题(404)。尝试添加.htaccess和生成的网址中的信息。也许这是有效的,因为你已经指定了一个默认countroler,但jQuery不知道CI控制器“属于”,并且是使用base_url()函数的一个好习惯。我建议你打开终端并检查生成的网址。如果你直接点击浏览器的URL,会发生什么? –

+0

非常感谢您的帮助JP Aulet。我回答了你在上面评论中询问过的完全相同的问题。希望我们靠近这个地方。再次感谢您的帮助:) – fedejp