将数据从jQuery发送到laravel控制器

时间:2018-04-11 21:28:11

标签: php jquery ajax laravel

我正在使用laravel,我想从jQuery接收数据到我的控制器将其插入数据库,我尝试了很多方法但没有成功 这是我的剧本:

$.ajaxSetup({
   headers: { 'X-CSRF-Token' : $('meta[name=_token]').attr('content') }
});
$.ajax({
   url:'/test',
   type: 'POST',
   dataType: 'JSON',
   data: {
      "name": "Name",
      "color": "red",
    },
});

和控制器:

public function test()
{
  if(Request::ajax()) {
      $data = Input::all();
  }
  dd(json_decode($data));  
}

最后是路线:

Route::post('/test',[
    'uses' => 'TagsController@test'
]);

对我来说似乎没问题,但结果是:(: enter image description here

2 个答案:

答案 0 :(得分:1)

也许问题出在您的控制器中,因为您没有告诉服务器,您希望使用哪个表来存储数据 或者也许是因为你的网址... jquery不明白什么是{{}}

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});

$.ajax({
    url: '/test',
    method: 'post',
    data: $('#form-id').serialize(), // prefer use serialize method
    success:function(data){
        console.log(data);          
    }
});

控制器:

use Illuminate\Http\Request;

public function test(Request $request)
{
  if($request::ajax()) {
      $data = $request->color;
  }
  dd(json_decode($data));  
}

我正在使用序列化,因为它非常强大,我不需要逐个输入字段名称

我不知道您的控制器是否仅用于从客户端检索数据,或者您想使用ajax将数据存储在数据库中..所以,我使用$request->color来确保从客户端检索数据

答案 1 :(得分:0)

在主刀片页面中添加此元标记

<meta name="csrf-token" content="{{ csrf_token() }}">

而不是旧的scholl jquery ajax ..只需使用Axios。它存在于app.js.里面简单而且非常容易。它已经检测到csrd-token元标记。所以不需要在表格或标题中进行

更改此

$.ajax({

    url: '{{route("test")}}',
    method: 'post',
    data : {
       "name": "Name",
       "color": "red",
    },
    success:function(data){
        console.log(data);          
    }

});

到这个

axios.post('{{route("test")}}', {
    "name": "Name",
    "color": "red"
})
.then(function(response) { 
    console.log(response);
});

你的路线必须是这样的。

Route::post('/test',[
    'uses' => 'TagsController@test'
])->name('test');

你的控制器看起来很好......

public function test(Request $request)
{
   if($request->wantsJson()) {
      $data = $request::all();
      return $data;
   }
}