codeigniter中的jquery.ajax

时间:2011-06-20 05:09:48

标签: codeigniter jquery controller

我在codeigniter中实现jquery.ajax时遇到问题。我想将控件发送到控制器的特定功能。我正在设置我的javascript函数中的url

var url='<?php echo('First/index');?>';
var ajaxoptions={url:url,success:submit_ajax_response};

First是我的控制器,index是我想要发送控件的函数。当我点击调用它的事件时,会形成以下网址

http://localhost/codeigniter/First/index

网址很好,但却产生了404的错误。我在zendframework中已经多次完成了这种操作,但无法在codeigniter中完成这项工作。我注意到有一件事,如果我在网址中添加index.php它可以正常工作。通过添加index.php,url变得像

http://localhost/codeigniter/index.php/First/index

我很惊讶如何从路径文件中删除index.php。我在route.php文件中只有两行

$route['default_controller'] = "First";
$route['404_override'] = '';

我已将控制器设为默认控制器。  我做得对吗?问题是什么以及如何完成这项工作?

2 个答案:

答案 0 :(得分:3)

我注意到你网址中缺少的部分是CodeIgniter所拥有的“index.php”。 将您的代码更改为:(您需要URL帮助程序,因此请在此之前加载):

var url="<?php echo (index_page() . 'First/index');?>";
var ajaxoptions={url:url,success:submit_ajax_response};

index_page返回您的站点“索引”页面,如配置文件中所指定的那样。

要从CodeIgniter链接中删除index.php,请参阅here

答案 1 :(得分:3)

你需要检查一些事情。首先,在/application/config/config.php中确保索引文件设置为:

$config['index_page'] = '';

其次,确保你有正确的.htaccess。这应该位于公共目录的根目录(与index.php相同的位置):

<ifModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    Options FollowSymLinks

    #Checks to see if the user is attempting to access a valid file,
    #such as an image or css document, if this isn't true it sends the
    #request to index.php
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>