「AJAX」は初めてで、「AJAX」を使用してリクエスト「ONSELECT」を送信し、「laravel 5」で「JSON」応答を受信しようとしています。
これが私の見解です
_<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>
_
ここにajaxリクエストを受け取るためのコントローラーがあります
_public function formdata(){
$data = Input::get('data1');
//somecodes
return Response::json(array(
'success' => true,
'data' => $data
));
}
_
これが私のルートです
_ Route::post('form-data',array('as'=>'form-data','uses'=>'FormController@formdata'));
_
_form-data
_と{{Url::route('form-data')}}
のみでajaxのURLを変更しようとしました。
Laravel 5は、セキュリティ上の理由でcsrfトークン検証を使用しています。..これを試してください...
Routes.phpで
route post('form-data', 'FormController@postform');
マスターレイアウトファイル内
<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);
}
});
エラーコールバックをajaxリクエストに追加して、エラーがスローされたかどうかを確認します。
$.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);
}
});
応答がJSON文字列であっても、console.log()を使用して詳細情報を表示する方が適切です。コードを試して、ブラウザコンソールに何かが記録されているかどうかをお知らせください
JQueryコードのsuccess
コールバックに構文エラーがあります。そのため、Laravelへのpost
リクエストを行わないのは、動作するjavascriptの下で試してください
<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>
Laravelでは、単にarray
またはobject
を返すことができ、自動的にjson
応答に変換します
return ['success' => true, 'data' => $data];
コードに誤りがあります。適切に記述してください。
$.ajax({
type :"POST",
url :"http://localhost/laravel/public/form-data",
dataType:"json",
data :{ data1:data },
success :function(response){
alert("thank u");
}
});
更新
Returningデータ型がjsonであることがわかりました。
dataType:"json",
または
dataType:"jsonp",
問題は、タイプが「POST」ではなく「GET」であり、
route get('form-data', 'FormController@postform');
皆さん、助けてくれてありがとう
すべてのフォームデータを送信する場合は、データを使用します。ajaxでは$(this).serialize()を使用し、フォーム内では{{csrf_field()}}を使用します