问题
I wrote an application on my local machine that works perfectly. I am using XAMPP so it is running Apache.
When I uploaded the application to my ubuntu test server, I am getting a 404 error on the ajax call and I am honestly perplexed.
I am using CodeIgniter 3.1.8.
The controller is definitely there and the .htaccess is working fine on my local machine. I checked the case of the filename for the controller and it is fine.
Here's the javascript of the ajax call:
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){
}
});
}
The controller definition and applicable function (just to show it exists... I don't think the internal code is relevant):
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Decide extends MY_Controller {
function ajaxStep2(){
//Code here
}
}
I have done reading and I see some stuff related to the routes file but again I come back to the fact that it works fine on my local machine. I don't think it's file permissions because the index() method runs fine.
I have used ajax a lot and I have never had this issue before so I am honestly not sure where to even look on this. Any thoughts?
回答1:
Use base_url()
or site_url()
in ajax like this :
url: "<?=base_url('decide/ajaxStep2');?>",
OR
url: "<?=site_url('decide/ajaxStep2');?>",
Whole code should be like this
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){
}
});
}
回答2:
Could you change the uppercase S from step and try again as lower case url ? I think camel case is been replaced by your framework hope it helps
回答3:
As you named your Controller class Decide the file name must be Decide.php. Your application will work perfectly on local XAMPP environment even though you named your file as decide.php but it won't work on a live server.
you have to put the capital letter in front of the file name to make them work. Windows has no problems at all since they don't use case-sensitive naming as Linux/Unix do. So as incredible, this can sound if your Windows XAMPP localhost server is working and when you upload it to a Linux/Unix XAMPP and you keep getting 404 errors, try the capital letter first, that could save you some time.
来源:https://stackoverflow.com/questions/50707585/codeigniter-ajax-gets-404-error