使用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….试试这个……

  1. 在routes.php中

     route post('form-data', 'FormController@postform'); 
  2. 在主布局文件中

      
  3.   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()}}