我在本地机器上编写了一个完美运行的应用程序。我正在使用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而且之前从未遇到过这个问题所以我老实说不确定在哪里看这个。有什么想法吗?
答案 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错误时,可能会发出声音,请先尝试使用大写字母,这样可以节省一些时间。