Php 此路由不支持POST方法。(带ajax的Laravel)
我正在尝试使用laravel和ajax检查预订活动室的时间和地点的可用性 我已经尝试了在网上找到的所有可能的解决方案。但仍然不起作用。请帮忙 我有一个表单,它的方法是Php 此路由不支持POST方法。(带ajax的Laravel),php,jquery,ajax,laravel,Php,Jquery,Ajax,Laravel,我正在尝试使用laravel和ajax检查预订活动室的时间和地点的可用性 我已经尝试了在网上找到的所有可能的解决方案。但仍然不起作用。请帮忙 我有一个表单,它的方法是POST。我也不会忘记添加@csrf。在表格中,我有3个正常的输入字段。下面是我的代码 @csrf 在我的web.php中 Route::post('check','MyController@check'); 问题是 此路由不支持POST方法。支持的方法: 得到,头。 它似乎没有沿着路线走。 多谢各位 编辑: 正如答案所说,我
POST
。我也不会忘记添加@csrf
。在表格中,我有3个正常的输入字段。下面是我的代码
@csrf
在我的web.php中
Route::post('check','MyController@check');
问题是此路由不支持POST方法。支持的方法: 得到,头。
它似乎没有沿着路线走。
多谢各位 编辑: 正如答案所说,我已经编辑如下。但似乎不起作用
<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');
});
});
/**这对我也不管用-(
$.ajaxSetup({
标题:{
'X-CSRF-TOKEN':$('meta[name=“CSRF-TOKEN”]).attr('content'))
}
}); */
$(“#检查表单”)。在('submit',函数(事件){
event.preventDefault();
console.log('在这里之前我还可以');
$.ajax({
类型:“POST”,
url:“检查”,
标题:{
'X-CSRF-TOKEN':$('meta[name=“CSRF-TOKEN”]).attr('content'))
},
数据:{
‘地点’:$(‘房间号’).val(),
“开始时间”:$(“#开始时间”).val(),
'结束时间':$('开始时间').val()
},
成功:功能(数据){
console.log('iam here->'+数据);
}
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请求代码
$.ajax({
type: "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');
});
我已经将请求属性方法替换为键入,看起来您的JavaScript代码有一些打字错误。您定义的
POST
路由是正确的,但是如果您检查开发人员工具的网络选项卡,您会看到代码尝试在当前路由上POST
(我想这是一个隐式的,仅是GET/HEAD
)
第一个输入错误或错误出现在代码的第4行:
//在单引号中使用未转换的单引号,或将文本用双引号括起来
console.log('在这里之前我还可以');
// ^-^---------------------^
log(“在这里之前我都很好。”);
log('在这里之前我还可以');
第二个是在第16行,在该行中,您提前关闭了以success(data)
函数结尾的括号,再加上第17行的代码,将导致错误
您所需要做的就是修复第一个控制台.log
,然后将第二个控制台移动到success
调用中
您可以在这里看到正在运行的代码
$('check form')。在('submit',函数(事件){
event.preventDefault();
$.ajax({
方法:“张贴”,
url:“检查”,
数据:{
‘地点’:$(‘房间号’).val(),
“开始时间”:$(“#开始时间”).val(),
'结束时间':$('开始时间').val()
},
成功:功能(数据){
console.log('iam here->'+数据);
console.log('ohooh');
}
});
返回false;
});
我建议使用一个编辑器、插件或IDE,至少突出显示警告/错误、拼写错误发生在我们所有人身上,并且通常是一个很难调试的问题。您是否检查过是否有其他具有相同url的路由?可能您有一个路由::get('check','Whatever');没有Rabi。只有一个。请尝试给该路由命名为Route::post(‘支票’,’MyController@check')->name('checkForm');然后在ajax中使用url助手:url:{route('checkForm')}}更改方法以在ajax方法中键入。我还将添加$.ajaxSetup({headers:{'X-CSRF-TOKEN':$('meta[name=“CSRF TOKEN”]').attr('content')});在文档准备部分。尝试在ajax调用的url中添加一个前导的
/
。例如,如果您位于example.com/page/subpage
,当url='check'
时,它将导致example.com/page/check
而不是example.com/check>。通过ajax调用,表单数据将传递到POST路由使用'data'属性@Htet不会传递CSRF令牌。这个答案应该可以解决他的问题。方法或类型应该不会有什么不同。我相信这与他在ajax请求中没有传递的CSRF令牌有关。WOOO…当我移动最后一个console.log('ohooh')时进入成功函数后,它会响应我的数据。似乎正在工作。谢谢。但在我的MyController@check,我死了(‘我到了这里’),它没有出来。
$.ajax({
type:'POST',
url:'/ajax',
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
success:function(data){}
});
$.ajax({
type: "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');
});