web-dev-qa-db-fra.com

La méthode GET n'est pas prise en charge pour cet itinéraire. Méthodes prises en charge: POST. laravel 5.8 Ajax

J'essaie de mieux comprendre comment enregistrer les données de la demande ajax dans la base de données sur laravel, les données dans ce cas sont des données brutes (JSON FORMATTED) juste pour voir comment cela fonctionne, cela fonctionne bien si je n'ajoute pas cela au code ( noter la sauvegarde dans la base de données)

la partie économique

 $input = Input::get('name');
 $json = new JsonTest;
 $json->json = $input;
 $json->save();

ça marche bien mais quand j'ai cette partie d'en haut dans le code (la partie sauvegarde) ça donne une erreur

   The GET method is not supported for this route. Supported methods: POST.

alors comment puis-je enregistrer la zone de texte dans la base de données. la base de données base de données

web.php

 Route::post('/customer/ajaxupdate', 'AjaxController@updateCustomerRecord')- 
 >name('jsonTest');

Le controlle

public function updateCustomerRecord(Request $request)
{

    if(request()->ajax()){

        $input = Input::get('name');
        //$input = $request->all();
        $json = new JsonTest;
        $json->json = $input;
        $json->save();

        return response()->json(['status' => 'succes', 'message' => 'saved in database']);

    } else {

        return response()->json(['status' => 'fail', 'message' => 'this is not json']);

    }

}

La lame

 <!DOCTYPE html>
 <html lang="en">
<head>
<title>JavaScript - read JSON from URL</title>
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<meta name="csrf-token" content="{{ csrf_token() }}" />
</head>

<body>
<textarea  oninput="myFunction()" id="input" name="input" style="height: 
500px;width: 500px">
</textarea>

<script>
const warning = 'This json is not correctly formatted';
const text = {status: "failed", message: "this is not correct json format"};

$.ajaxSetup({
    headers: {

        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')

    }
});

function myFunction(){

    let input = document.getElementById("input").value;

    try {
        let id = JSON.parse(input);
        if (id && typeof id === "object") {
            $.ajax({
                method: 'POST', // Type of response and matches what we said in the route
                url: '{{ route('jsonTest') }}', // This is the url we gave in the route
                data: {'id' : id}, // a JSON object to send back
                success: function(response){ // What to do if we succeed
                    console.log(response);
                },
                error: function(jqXHR, textStatus, errorThrown) { // What to do if we fail
                    console.log(JSON.stringify(jqXHR));
                    console.log("AJAX error: " + textStatus + ' : ' + errorThrown);
                }
            });
        }
    }
    catch (e) {
        console.log(warning);
        console.log(text);
    }
    return false;
}
</script>

</body>
</html>
7
HashtagForgotName

J'ai rencontré le même problème une fois, où le problème réside dans la redirection automatique de http vers https. Ainsi, l'url que j'ai changé en https lui-même lors de l'appel de l'API.

0
Nidhin