我正在使用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'
]);
答案 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;
}
}