在Laravel的控制器中获取POST参数(由javascript / vue发送)

时间:2019-06-18 08:48:56

标签: javascript laravel vue.js

我正在通过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 []

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

  

正文:{“电子邮件”:“ me@xxxxx.xx”,“密码”:“ 12345678”}

为什么我的控制器中没有POST数据?我想念的是什么?

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

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

请尝试以下操作:

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在评论中指出的那样,将内容类型设置为application/json