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>
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.