[英]How to use ajax in laravel 5.3
我是Laravel的新手,正在使用Laravel 5.3。 我想创建一个文本字段,它会自动建议一些数据,当我选择一个数据时,它会将它添加到一个数组。 我想将该数组发送到控制器以供进一步使用。 对此
查看文件如下:
<head>
<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
<script src="http://code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<script>
$(document).ready(function() {
var members = {!! json_encode($member) !!};
console.log(members);
var arr = [];
$("#tags").autocomplete({
source: members,
select: function (event, ui) {
arr.push(ui);
console.log(arr);
}
});
$("#submit").click(function(event){
$.ajax({
type: "POST",
url: '/storeresearch',
data: {selectedMembers: arr},
success: function( msg ) {
console.log(msg);
}
});
});
});
</script>
</head>
<body>
<form id="hu" action="/storeresearch" method="POST">
{!! csrf_field() !!}
<label>Research Author</label>
<input type="text" id="tags" name="researchsupervisor_1" value="">
<input type="submit" name="submit" id="submit" class="btn btn-primary" value="Add">
</form>
</body>
我的Controller文件如下:
public function store(Request $request){
if($request->ajax())
{
$mem = $request->all();
return response()->json($mem,200) ;
}
else{
return "not found";
}
web.php如下:
Route::post('/storeresearch','ResearchController@store');
但似乎没有发生ajax调用。 在控制器中,它总是进入else部分。 有什么问题可以帮到什么问题?
尝试这样的事情:
$.ajax({
url : '/login',
method : 'post',
data : {
login_username : userName,
password : password
},
headers:
{
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
success : function(response){
}
});
路线:
Route::post('/login',[
'uses' => 'AdminServiceController@login'
]);
控制器方法:
public function login()
{
$userName = INPUT::get('login_username');
$password = INPUT::get('password');
// your logic
}
你的代码大多看起来不错。 但是当您使用POST请求时,您缺少使用AJAX调用发送csrf令牌。
您可以通过以下方式发送带有AJAX调用的csrf令牌:
<meta name="csrf-token" content="{{ csrf_token() }}">
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
更多信息: https : //laravel.com/docs/5.3/csrf#csrf-x-csrf-token
当你点击按钮时,它是否真的触发了一个AJAX调用? 请在浏览器的网络选项卡上查看。
我通过以下方式解决了这个问题
$.ajax({
type:'POST',
url:'your url',
data:{_token: "{{ csrf_token() }}"
},
success: function( msg ) {
}
});
什么是Request的命名空间声明?
如果是use Illuminate\\Http\\Request;
尝试use Request;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.