关于php:Codeigniter Ajax出现404错误

Codeigniter Ajax gets 404 Error

我在本地计算机上编写了一个运行良好的应用程序。我正在使用XAMPP,因此它正在运行Apache。

当我将应用程序上传到ubuntu测试服务器时,在ajax调用中出现404错误,而且我实在感到困惑。

我正在使用CodeIgniter 3.1.8。

控制器肯定在那里,.htaccess在我的本地计算机上运行良好。我检查了控制器文件名的大小写,情况很好。

这是ajax调用的javascript:

1
2
3
4
5
6
7
8
9
10
11
function step2(){
    var canShow = false;    
    var cCode = $("#student_code").val();
    $.ajax({
        url:"/decide/ajaxStep2",
        data: {"student_code": cCode,"lang":"<?=$lang?>"},
        method:"post",
        success: function(data){
        }
    });
}

控制器定义和适用的功能(只是为了表明它的存在...我认为内部代码不相关):

1
2
3
4
5
6
7
8
9
<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Decide extends MY_Controller {
    function ajaxStep2(){
        //Code here
    }

}

我已经读完了,并且看到了一些与routes文件相关的内容,但是我又回到了它在我的本地计算机上可以正常工作的事实。我认为这不是文件权限,因为index()方法运行良好。

我已经使用ajax了很多,而且以前从未遇到过此问题,因此,老实说,我不确定该在哪里查看。有什么想法吗?


像这样在ajax中使用base_url()site_url()

1
url:"<?=base_url('decide/ajaxStep2');?>",

1
url:"<?=site_url('decide/ajaxStep2');?>",

整个代码应该像这样

1
2
3
4
5
6
7
8
9
10
11
12
function step2()
{
   var canShow = false;    
   var cCode = $("#student_code").val();
   $.ajax({
      url:"<?=base_url('decide/ajaxStep2');?>",
      data: {"student_code": cCode,"lang":"<?=$lang?>"},
      method:"post",
      success: function(data){
      }
   });
}


您能否从步骤更改大写字母S并再次尝试输入小写字母url?我认为骆驼案已被您的框架所取代,希望对您有所帮助


在将Controller类命名为Decide时,文件名必须为Decide.php。即使您将文件命名为decision.php,您的应用程序仍可以在本地XAMPP环境中完美运行,但无法在实时服务器上运行。

您必须将大写字母放在文件名之前,以使其起作用。 Windows根本没有问题,因为它们不像Linux / Unix那样使用区分大小写的命名方式。因此,令人难以置信的是,如果您的Windows XAMPP本地主机服务器正在运行,并且将其上传到Linux / Unix XAMPP时仍然出现404错误,请先尝试使用大写字母,这样可能会节省一些时间。