Php 此路由不支持POST方法。(带ajax的Laravel)

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方法。支持的方法: 得到,头。 它似乎没有沿着路线走。 多谢各位 编辑: 正如答案所说,我

我正在尝试使用laravel和ajax检查预订活动室的时间和地点的可用性

我已经尝试了在网上找到的所有可能的解决方案。但仍然不起作用。请帮忙

我有一个表单,它的方法是
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');
    });