2 votes

L'URL de la route POST Ajax affiche 404 dans CodeIgniter 4

J'ai des problèmes avec Ajax et les routes. J'utilise Codeigniter 4.2.1.

Lorsque j'essaie de soumettre un formulaire de connexion en utilisant l'ajax, j'obtiens une erreur 404 Not found.

Voici le code de mentions que j'utilise :

Le formulaire HTML

<form id='loginFormScript' method='POST'>
<input type="email" id="emailLogin" name="emailLogin" >
<input type="password" id="passwordLogin" name="passwordLogin" >
<button type="submit">Submit</button>

Le script AJAX

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
    $("#loginFormScript").submit(function(e) {
        alert("hello");
        e.preventDefault();
        $.ajax({
            url: '<?php echo base_url('save-user'); ?>',
            type: 'POST',
            data: $('#loginForm').serialize(),
            dataType: "json",
            success: function(data) {
               //SUCCESS CODE
            }
        });
    });
</script>

L'itinéraire

$routes->setDefaultNamespace('App\Controllers');
$routes->setDefaultController('Home');
$routes->setDefaultMethod('index');
$routes->setTranslateURIDashes(false);
$routes->set404Override();
$routes->get('/', 'Home::index');
$routes->get('/login', 'Home::login');

$routes->get('/new1', 'Home::loginCheck');
$routes->get('/new', 'Home::login');
$routes->post("/save-user", "Home::saveUser");

Mon contrôleur

namespace App\Controllers;
class UserController extends BaseController
{
    public function __construct()
    {
            helper(['form', 'url']);
    }
    public function index()
    {
        return view('welcome_message');
    }
    public function login()
    {
      return view('login');
    }
    public function saveUser()
    {
            print_r($_POST);exit;
    }
}

0voto

steven7mwesigwa Points 97

Explication :

app/Config/Routes.php

$routes->post("/save-user", "Home::saveUser");

La définition de l'itinéraire au-dessus de pointe vers le saveUser dans le Home contrôleur. Pourtant, d'après le code source que vous avez téléchargé, cette méthode existe dans un contrôleur entièrement différent. D'où le 404 Not Found erreur.

Solution :

Au lieu de cela, utilisez ceci :

$routes->post("/save-user", "UserController::saveUser");

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X