使用Ajax并在laravel 5中返回json数组
我是“AJAX”的新手,我一直在尝试使用“AJAX”发送请求“ONSELECT”并在“laravel 5”中收到“JSON”响应。
这是我的观点
a b c $('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"); }), });
这是我的Controller接收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令牌validation….试试这个……
-
在routes.php中
route post('form-data', 'FormController@postform');
-
在主布局文件中
-
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); } });
最好使用console.log()来查看详细信息,即使响应是json字符串。 尝试使用代码,如果有什么内容记录到浏览器控制台,请告诉我们
你的jQuery代码在success
回调中有语法错误,这就是为什么它没有向Laravel发出任何post
请求,请尝试下面的javascript它会工作
您在代码中出错,请正确编写。
$.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",
问题是类型应该是“GET”而不是“POST”和
route get('form-data', 'FormController@postform');
感谢你们每个人的帮助
如果您要发送所有表单数据然后使用数据更好:ajax中的$(this).serialize()和内部表单使用{{csrf_field()}}