首页 > 解决方案 > AJAX 发送 GET 而不是 POST

问题描述

我正在使用 Laravel 并尝试使用 AJAX 将变量发送到控制器,但请求正在更改为 GET!

AJAX

function fetchTasks(email) {
  $.ajax({
    method: 'POST',
    dataType: 'json',
    url: '/teamwork',
    data: {_method: 'POST', email : email},
    headers: {
      'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
  });
}

路由.php

Route::any('/teamwork', 'TeamworkController@teamwork')->name('testPRoute');

当我将路由方法更改为发布时,它显示 405(不允许方法)

当我在控制器中使用 dd($request) 时,这就是我得到的 图像

那么,为什么我的 Ajax 请求不起作用?

已编辑: 我已将代码修改为以下

function fetchTasks(email) {
   console.log(email);
   var token = "{{ csrf_token() }}";

   $.ajax({
       method: "POST",
       url: "teamwork",
       data: {
           _token:token,
           'email': email
        },
        contentType: "application/json",

        success: function(data) {
           console.log(data);
        },
        error: function(err) {
           console.log(err);
        },
        complete: function () {
             window.location.href = '{{route("testTRoute")}}';
        }
});

}

它仍在发送一个空的 GET 请求。控制台的输出如下:

{readyState: 4, getResponseHeader: ƒ, getAllResponseHeaders: ƒ, setRequestHeader: ƒ, overrideMimeType: ƒ, …}

标签: phpajaxlaravel

解决方案


你试过这个吗?

$.ajax({
   headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},
   url:'teamwork' ,
   type:'post',
   data: { email : email},
   method: 'POST',
   dataType: 'json',
   success:function(result){console.log(result);}
  });

路线

Route::match(array('GET','POST'),'/teamwork', 'TeamworkController@teamwork')->name('testPRoute');

推荐阅读