Ich bin neu bei "AJAX" und habe versucht, eine Anfrage "ONSELECT" mit "AJAX" zu senden, und erhalte in "laravel 5" eine Antwort "JSON".
Hier ist meine Ansicht
<select>
<option data-id="a" value="a">a</option>
<option data-id="b" value="b">b</option>
<option data-id="c" value="c">c</option>
</select>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<script type="text/javascript">
$('select').change(function(){
var data = $(this).children('option:selected').data('id');
$.ajax({
type :"POST",
url :"http://localhost/laravel/public/form-data",
dataType:"html",
data :{ data1:data },
success :function(response)
alert("thank u");
}),
});
</script>
Hier ist mein Controller, um eine Ajax-Anfrage zu erhalten
public function formdata(){
$data = Input::get('data1');
//somecodes
return Response::json(array(
'success' => true,
'data' => $data
));
}
Hier ist meine Route
Route::post('form-data',array('as'=>'form-data','uses'=>'[email protected]'));
Ich habe auch versucht, die URL von ajax nur mit form-data
und {{Url::route('form-data')}}
zu ändern.
Laravel 5 verwendet aus Sicherheitsgründen die Validierung von csrf-Token.
In routen.php
route post('form-data', '[email protected]');
In der Master-Layoutdatei
<meta name="csrf-token" content="{{ csrf_token() }}" />
var CSRF_TOKEN = $ ('meta [name = "csrf-token"]'). attr ('content');
$.ajax({
url: '/form-data/',
type: 'POST',
data: {_token: CSRF_TOKEN},
dataType: 'JSON',
success: function (data) {
console.log(data);
}
});
Fügen Sie Ihrer ajax-Anforderung einen Fehlerrückruf hinzu, um herauszufinden, ob ein Fehler aufgetreten ist.
$.ajax({
type :"POST",
url :"http://localhost/laravel/public/form-data",
dataType:"json",
data :{ data1:data },
success :function(response) {
alert("thank u");
},
error: function(e) {
console.log(e.responseText);
}
});
verwenden Sie console.log (), um detaillierte Informationen anzuzeigen, auch wenn die Antwort eine Json-Zeichenfolge ist. Probieren Sie den Code aus und lassen Sie uns wissen, wenn an der Browserkonsole etwas angemeldet ist
Ihr jQuery-Code hat einen Syntaxfehler in success
callback. Deshalb werden post
-Anfragen nicht an Laravel gesendet
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<select>
<option data-id="a" value="a">a</option>
<option data-id="b" value="b">b</option>
<option data-id="c" value="c">c</option>
</select>
<script type="text/javascript">
$(function () {
$('select').on('change', function (e) {
var data = $(this).children('option:selected').data('id');
$.ajax({
type :"POST",
dataType:"json",
url :"http://localhost/laravel/public/form-data",
data :{ data1:data },
success :function(response) {
alert("thank u");
}
});
});
})
</script>
In Laravel können Sie einfach array
oder object
zurückgeben und es wird automatisch in json
response konvertiert
return ['success' => true, 'data' => $data];
Sie haben einen Fehler im Code gemacht, bitte schreiben Sie ihn richtig.
$.ajax({
type :"POST",
url :"http://localhost/laravel/public/form-data",
dataType:"json",
data :{ data1:data },
success :function(response){
alert("thank u");
}
});
Update
Ich habe gerade gesehen, dass Ihr Rückgabedatentyp json ist
dataType:"json",
oder
dataType:"jsonp",
Das Problem war, dass Typ "GET" anstelle von "POST" und sein sollte
route get('form-data', '[email protected]');
Ich danke Ihnen allen für Ihre Hilfe
Besser, wenn Sie alle Formulardaten senden, verwenden Sie data: $ (this) .serialize () in ajax und innerhalb von form {{csrf_field ()}}.