php - 此路由不支持 POST 方法。(带有ajax的Laravel)
问题描述
我正在尝试使用 laravel 和 ajax 检查预订活动室的时间和地点的可用性。
我已经尝试了在网上找到的所有可能的解决方案。但仍然无法正常工作。请帮忙。
我有一个方法是POST
. 而且我不会忘记添加@csrf
它。在表单中,我有 3 个正常的输入字段。下面是我的代码。
<form id="check-form" method="post">
@csrf
<input type="text" name="place" id="room_no">
<input type="text" name="start_time" id="start_time">
<input type="text" name="end_time" id="end_time">
<input type="submit" value="submit">
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
$('#check-form').on('submit', function(event) {
event.preventDefault();
console.log('I'm still ok till here.');
$.ajax({
method: "POST",
url: "check",
data: {
'place': $('#room_no').val(),
'start_time': $('#start_time').val(),
'end_time': $('#start_time').val()
},
success: function(data) {
console.log('iam here -> ' + data);
}
console.log('ohooh');
});
});
在我的 web.php 中,
Route::post('check', 'MyController@check');
问题是 。. .
此路由不支持 POST 方法。支持的方法:GET、HEAD。
它似乎没有沿着路线走。
谢谢你。
编辑:正如答案所说,我已经编辑如下。但似乎不起作用。
<script type="text/javascript">
/** this does not also work for me. ;-(
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
}); */
$('#check-form').on('submit', function(event) {
event.preventDefault();
console.log('I'm still ok till here.');
$.ajax({
type: "POST",
url: "check",
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
data: {
'place': $('#room_no').val(),
'start_time': $('#start_time').val(),
'end_time': $('#start_time').val()
},
success: function(data) {
console.log('iam here -> ' + data);
}
console.log('ohooh');
});
});
解决方案
您需要在脚本中指定 csrf 令牌
<script type="text/javascript">
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$(".check-form").on('submit',function(e){
e.preventDefault();
$.ajax({
type:'POST',
url:'/check',
data: {
'place': $('#room_no').val(),
'start_time': $('#start_time').val(),
'end_time': $('#start_time').val()
},
success:function(data){
alert(data.success);
}
});
});
或者
$.ajax({
type:'POST',
url:'/ajax',
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
success:function(data){}
});
推荐阅读
- python - Conda 仅在输入后显示 input() 提示
- python - 烧瓶-wtforms。QuerySelectField 运行时错误
- java - Java 将一个对象转换为他的超类,然后将其转换回自身,从而保留引用
- dask - Dask groupby 关于期货
- html - 从 Django 为初学者获取 /static/css/base.css HTTP/1.1" 404 1660
- mysql - 如何在 GROUP_CONCAT 中使用选择别名?
- javascript - 为什么这个滚动代码在接近 div 的底部时会中断?
- reactjs - React-router.Problem with layouts,看不到其他路由
- python - Wayland 上的 wxpython 无法与屏幕坐标交互(移动窗口、GetScreenPosition 等)
- javascript - 如何访问键是另一个 JSON 对象的值的 JSON 对象的值?