Отправка данных CodeIgniter 4 возвращает страницу 404 - PullRequest
0 голосов
/ 07 августа 2020

Я только начал использовать CodeIgniter 4, и он сильно отличается от CI 3. При отправке формы, используя PHP post или ajax post request, оба возвращают страницу 404.

$('#formData').on('submit', function(e){
    e.preventDefault();
    var FormData = $(this).serialize();

    $.ajax({
        type: 'post',
        dataType:'json',
        url: '<?= base_url("/send-email") ?>',
        data: FormData,
        success: function(res){
            console.log(res)
        }
    })
})
<form id="formData" method="post">
    <div class="form-group row">
        <div class="col-md-6 mb-4 mb-lg-0">
        <input
            type="text"
            class="form-control"
            placeholder="First name"
            name="firstname"
        />
        </div>
        <div class="col-md-6">
        <input
            type="text"
            class="form-control"
            placeholder="Last name"
            name="lastname"
        />
        </div>
    </div>
    <div class="form-group row">
        <div class="col-md-6 mr-auto">
            <input type="submit" id="send_email" class="btn btn-block btn-primary text-white py-3 px-5" value="Send Message">
        </div>
    </div>
</form>

PHP Код

<?php namespace App\Controllers;

use CodeIgniter\Controller;

class DefaultController extends BaseController
{
    public function send_email(){
        if($this->request->isAJAX){
            print_r($_POST);
        }
    }
}

У меня есть form помощник, загруженный из BaseController. Интересно, есть ли еще какой-либо параметр, который нужно настроить, чтобы он работал. Совершенно не понимаю почему.

1 Ответ

1 голос
/ 07 августа 2020

Хорошо, я выяснил причину ошибки. Чтобы отправить любой запрос, я должен указать его в маршрутах указанного c метода, который я хочу использовать первым. В моем случае я пытаюсь отправить почтовый запрос. Итак, моя маршрутизация должна быть такой:

$routes->post('/send-email', 'DefaultController::send_email');

На основе do c https://codeigniter.com/user_guide/incoming/routing.html#using -http-verbs-in-routes

...