【问题标题】:jquery.ajax in codeignitercodeigniter 中的 jquery.ajax
【发布时间】:2025-12-07 22:15:01
【问题描述】:

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

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

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

http://localhost/codeigniter/First/index

URL 没问题,但它产生了404 的错误。我在zendframework 中多次做过此类操作,但无法在codeigniter 中完成这项工作。我注意到一件事,如果我在 url 中添加 index.php 它可以正常工作。通过添加 index.php,url 变得像

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

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

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

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

【问题讨论】:

  • 如果 URL 生成 404,则该 URL 不正常。当您在浏览器中访问该 URL 时会发生什么情况?如果问题是您的 ajax 请求,您还需要发布该代码。
  • @Calving Froedge 我注意到如果我在我的 url 中包含 index.php/ 它工作正常。如何从路由中删除 index.php?
  • @Calving Froedge。老兄,请看我编辑的问题

标签: codeigniter jquery controller


【解决方案1】:

您需要检查几件事。首先,在 /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>

【讨论】:

  • @Calving Froedge。谢谢老兄,这就是我想要完成的...... +1 为你解释清楚的答案
【解决方案2】:

我注意到您的 URL 中缺少的部分是 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

【讨论】:

  • 除非他没有从路由中删除 index.php,否则他不应该将 index.php 添加到路由中以使其工作。
  • @Calvin Froedge:这就是我回应 index_page() 的原因。如果他使用 mod_rewrite 删除了 index.php,他一定是更改了 $config['index_page'],所以一切都应该在这种情况下正常工作。
  • @Calving Froedge 如何从路由文件中删除 index.php?
  • @Awais:您可以在 .htaccess 文件中使用 mod_rewrite 将其删除。 *.com/questions/1445385/…
  • 更改配置 /application/config/config.php 使这一行: $config['index_page'] = 'index.php';设置为:$config['index_page'] = '';