[英]unable to retrieve data sent via ajax in controller Laravel 5.1
我通过ajax将数据发送到我的控制器
$.ajax({
url: 'test',
type: 'POST',
data: { id: sessionStorage.getItem('user_id') },
dataType: 'json',
contentType: "application/json; charset=utf-8"/*,
success:function(id){
alert(sessionStorage.getItem('user_id'));
}*/
});
在我正在使用的控制器中
public function getUserMessages(){
$id = Input::get('id');
$messages = Message::where('message_by' , Auth::user()->id)->where('message_for',$id)->get();
echo "id is ",$id;
return $messages;
}
我在$id
得不到任何东西。 我也尝试过$_POST['id']
,它表示undefined index id
。 我怎样才能检索id值? $request->has('id')
返回false。
您应该使用Request
类而不是Input
:
public function getUserMessages(\Illuminate\Http\Request $request){
$id = $request->id;
$messages = Message::where('message_by' , Auth::user()->id)->where('message_for',$id)->get();
return $messages;
}
您的ajax调用不起作用并将抛出500服务器错误,因为每当您发布一些内容时,您需要使用laravel的csrf令牌。 在您的刀片视图顶部创建一个元标记,如:
<meta name="_token_" content="{{ csrf_token() }}">
并在执行ajax调用时获取值:
$.ajax({
url: '/test',
type: 'POST',
data: {
id: sessionStorage.getItem('user_id'),
_token:document.getElementsByName('_token_')[0].getAttribute('content')
},
success:function(id){
alert(id);
}
});
很可能你的ajax调用中的成功函数只会提醒[object Object],以便更好地了解返回的内容,使用
console.log(id);
代替。
您还可以为ajax调用创建一个错误函数,以便显示可能的错误。 只需添加
error: function(err){
console.log(err);
}
成功后的功能。
问题是您将应用程序内容设置为json,您不需要设置内容。
contentType(默认值:'application / x-www-form-urlencoded; charset = UTF-8')
$.ajax({
url: 'test',
type: 'POST',
data: { id: sessionStorage.getItem('user_id') },
dataType: 'json',
success:function(data){
console.log(data); // always good to output content for debugginn
}
});
希望这有帮助。 你的ajax现在应该工作了。
你有AJAX请求的路线吗? (我没看到。)
请尝试以下代码:
在您的AJAX代码中:
$.ajax({
type: "POST",
url: "{{ route('ajax_route') }}",
data: { _token: "{{ csrf_token() }}", data: "sample data" },
success: function(data){
$(".result").html(data);
},
dataType: "json"
});
在您的控制器代码中:
public function ajaxAction(Request $request){
if ($request->isXmlHttpRequest() && $request->isMethod('post')) {
$data = $request->input('data', null);
echo json_encode($data);
}
}
在您的路线代码中:
Route::post('/ajax_route', ['as' => 'ajax-action', 'uses' => 'YourController@ajaxAction']);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.