Codeigniter Ajax получает ошибку 404 - PullRequest
0 голосов
/ 05 июня 2018

Я написал приложение на моей локальной машине, которое работает отлично.Я использую XAMPP, поэтому он работает под управлением Apache.

Когда я загружаю приложение на свой тестовый сервер Ubuntu, я получаю сообщение об ошибке 404 при вызове ajax, и я искренне озадачен.

ЯЯ использую CodeIgniter 3.1.8.

Контроллер определенно есть, и .htaccess работает нормально на моей локальной машине.Я проверил регистр имени файла для контроллера, и это нормально.

Вот javascript вызова ajax:

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 голосов
/ 06 июня 2018

Используйте base_url() или site_url() в ajax, например:

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

ИЛИ

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){
      }
   });
}
0 голосов
/ 06 июня 2018

Как вы назвали свой класс контроллера Решите имя файла должно быть Решить.php .Ваше приложение будет отлично работать в локальной среде XAMPP, даже если вы назвали свой файл решил.php, но оно не будет работать на живом сервере.

вы должны поставить заглавную букву перед именем файла, чтобызаставить их работать.У Windows вообще нет проблем, поскольку они не используют регистрозависимое именование, как в Linux / Unix.Как это ни удивительно, это может звучать, если ваш локальный сервер Windows XAMPP работает и когда вы загружаете его в Linux / Unix XAMPP, и вы продолжаете получать 404 ошибки, попробуйте сначала заглавную букву, что может сэкономить вам время.

0 голосов
/ 05 июня 2018

Не могли бы вы изменить верхний регистр S с шага и повторить попытку в качестве URL нижнего регистра?Я думаю, что дело верблюда было заменено вашей структурой, надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...