【问题标题】:Get POST params in Laravel's Controller (sent by javascript/vue)在 Laravel 的 Controller 中获取 POST 参数(由 javascript/vue 发送)
【发布时间】:2019-10-31 20:46:15
【问题描述】:

我正在通过 POST 方法将表单数据从 Vue 组件发送到 Laravel API。

Laravel 返回一个很好的响应,但我无法在 Laravel 控制器中管理 POST 数据。

这是客户端:

 let body = JSON.stringify({
      'email': user.email,
      'password': user.password,
  });

  fetch("/login", {
         method: "POST",
         headers: new Headers({
            'Content-Type': 'application/x-www-form-urlencoded',
            'X-CSRF-TOKEN': user.token, // NOTA: no X_CXRF-TOKEN
             body: body
                })
   })

这是控制器

namespace App\Http\Controllers\Auth;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class LoginJWTController extends Controller{
  public function login(Request $request){
    print_r ($request->all());
  }
}

但是响应(200 OK)是一个空数组:array[]

在调试站点上,我看到请求标头具有:

正文:{"email":"me@xxxxx.xx","password":"12345678"}

为什么我的控制器中没有 POST 数据?我错过了什么?

感谢您的帮助!

【问题讨论】:

  • 将此'Content-Type': 'application/x-www-form-urlencoded' 更改为 'Content-Type': 'application/json' 以及为什么要在标题中发送您的正文的另一件事。
  • 内容类型没关系,正文才是问题!我写的位置不好!大声笑!

标签: javascript laravel vue.js


【解决方案1】:

目前,正文是标题的一部分。

请试试这个:

let body = JSON.stringify({
    'email': user.email,
    'password': user.password,
});
fetch("/login", {
     method: "POST",
     headers: new Headers({
        'Content-Type': 'application/json',
        'X-CSRF-TOKEN': user.token, // NOTA: no X_CXRF-TOKEN
     }),
     body: body
})

正如 Salman Zafar 在 cmets 中指出的那样,还将内容类型设置为 application/json

【讨论】:

  • 是的!这是!我写得太快了!!新鲜的眼睛总是受欢迎的!感谢您的宝贵时间并发现了错误! :D
猜你喜欢
  • 2019-01-28
  • 2017-08-23
  • 2016-01-23
  • 2021-05-22
  • 2019-08-11
  • 1970-01-01
  • 1970-01-01
  • 2018-04-05
  • 2018-02-18
相关资源
最近更新 更多