Вызов метода контроллера CodeIgniter возвращает 404 - PullRequest
0 голосов
/ 19 мая 2019

Сначала попытайтесь с помощью CI и получите ошибку «страница не найдена» при использовании Ajax для вызова метода.Дважды проверил имена и только что потерял в море.

[page_a.php]
<script>
  function f1() {
    $.ajax({
    type: 'POST',
    url: '<?= site_url("controller_a/method_a") ?>',
    error: function (jqXHR, exception) {
    var msg = '';
         if (jqXHR.status == 0            ) msg = 'Not connected, verify network [000]';
    else if (jqXHR.status == 404          ) msg = 'Requested page not found [404]';
    else if (jqXHR.status == 500          ) msg = 'Internal server error [500]';
    else if (exception    == 'parsererror') msg = 'Requested JSON parse failed';
    else if (exception    == 'timeout'    ) msg = 'Time out error';
    else if (exception    == 'abort'      ) msg = 'Ajax request aborted';
    else                                    msg = jqXHR.responseText;
    alert(msg);
}});}
</script>

[controller_a.php]
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class controller_a extends MY_Controller {
public function method_a() {
    echo '<script>alert(":-)");</script>';
}}

Ответы [ 3 ]

0 голосов
/ 20 мая 2019

Пожалуйста, проверьте файл rout.php . вероятно, есть еще один редирект в этом файле. и

0 голосов
/ 20 мая 2019
[page_a.php]
<script>
  function f1() {
    $.ajax({
    type: 'POST',
    url: '<?= site_url("index.php/Controller_a/Method_a") ?>'
});}
</script>

[Controller_a.php]
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Controller_a extends CI_Controller {
public function Method_a() {
    echo '<script>alert(":-)");</script>';
}}

Попробовал прописные буквы, расширил CI_Controller и index.php, но пока не повезло.

Я заметил, что если я использую

<?= site_url("Controller_a/Method_a") ?>

в html, так что он вызывается при загрузке / рендеринге страницы, затем метод найден и вызван, но просто не найден при динамическом вызове с Ajax / JS после загрузки страницы.

В консоли адрес

www.example.com/Controller_a/Method_a

Фактический адрес

www.example.com/web/content/application/controllers/Controller_a.php
0 голосов
/ 20 мая 2019
url: "<?php echo site_url('Controller/method')?>",

Попробуйте сохранить заглавную букву контроллера и повторить URL сайта.

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