Codeigniter Ajax获得404错误

时间:2018-06-05 19:26:59

标签: php jquery ajax codeigniter codeigniter-3

我在本地机器上编写了一个完美运行的应用程序。我正在使用XAMPP,因此它正在运行Apache。

当我将应用程序上传到我的ubuntu测试服务器时,我在ajax调用上遇到404错误,我老老实实地感到困惑。

我正在使用CodeIgniter 3.1.8。

控制器肯定在那里,.htaccess在我的本地机器上工作正常。我检查了控制器的文件名大小写,没问题。

以下是ajax调用的javascript:

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){
        }
    });
}

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

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

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

}

我已经完成了阅读,并且我看到了与路径文件相关的一些内容,但我又回到了它在我的本地机器上工作正常的事实。我不认为它是文件权限,因为index()方法运行正常。

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

3 个答案:

答案 0 :(得分:2)

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

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

OR

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

整个代码应该是这样的

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){
      }
   });
}

答案 1 :(得分:1)

您可以从步骤更改大写字母S并再次尝试作为小写网址吗?我认为骆驼案已被你的框架所取代,希望它有所帮助

答案 2 :(得分:0)

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

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

相关问题