如何在laravel中使用ajax 5.3
我是Larvael的新手,我使用laravel 5.3。我想创建一个文本字段,它会自动提示一些数据,当我选择一个数据时,它会添加到数组中。我想发送那个arry到控制器进一步使用。为此,如何在laravel中使用ajax 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>
我的控制器文件如下:
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','[email protected]');
但似乎没有ajax调用发生。在控制器中,它总是进入else部分。有什么问题可以帮助吗?
我通过执行以下
$.ajax({
type:'POST',
url:'your url',
data:{_token: "{{ csrf_token() }}"
},
success: function(msg) {
}
});
尝试一些事情是这样的:
$.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' => '[email protected]'
]);
控制器的方法:
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调用()。:( –
请求的名称空间声明是什么?
如果是use Illuminate\Http\Request;
尝试use Request;
我已经尝试过,但doesn也不行 –
变化''到'解决了这个问题'然后请尝试 –
是的,它会触发ajax调用,但不会发生此操作。它仍然在同一页 –
这就是阿贾克斯所代表的。当你处理ajax时,你的页面不会刷新。 –