Php Symfony4使用ajax调用请求数据为空

Php Symfony4使用ajax调用请求数据为空,php,laravel,symfony,Php,Laravel,Symfony,我是Symfony4的新手,所以这可能是一个noob问题。但我想不起来 把它弄出来 我正在尝试使用ajax调用注册用户: this.form.post('/register').then((response) => { console.log(response); }); 然后在symfony中,我的控制器方法如下所示: /** * @Route("/register", name="register", methods={"POST"}) * @param Request

我是Symfony4的新手,所以这可能是一个noob问题。但我想不起来 把它弄出来

我正在尝试使用ajax调用注册用户:

this.form.post('/register').then((response) => {
    console.log(response);
});
然后在symfony中,我的控制器方法如下所示:

/**
 * @Route("/register", name="register", methods={"POST"})
 * @param Request $request
 * @param UserPasswordEncoderInterface $passwordEncoder
 * @return JsonResponse
 */
public function register(Request $request, UserPasswordEncoderInterface $passwordEncoder)
{
    $user = new User();
    // encode the plain password
    $user->setPassword(
        $passwordEncoder->encodePassword(
            $user,
            $request->request->get('password')
        )
    );

    $user->setEmail($request->request->get('email'));
    $user->setName($request->request->get('name'));

    $entityManager = $this->getDoctrine()->getManager();
    $entityManager->persist($user);
    $entityManager->flush();

    return $this->json(['success' => 'User created']);
}
问题是数据总是空的。数据发送正确。当我在控制器中添加响应时,我看到:

我的标题等如下所示:

/**
 * @Route("/register", name="register", methods={"POST"})
 * @param Request $request
 * @param UserPasswordEncoderInterface $passwordEncoder
 * @return JsonResponse
 */
public function register(Request $request, UserPasswordEncoderInterface $passwordEncoder)
{
    $user = new User();
    // encode the plain password
    $user->setPassword(
        $passwordEncoder->encodePassword(
            $user,
            $request->request->get('password')
        )
    );

    $user->setEmail($request->request->get('email'));
    $user->setName($request->request->get('name'));

    $entityManager = $this->getDoctrine()->getManager();
    $entityManager->persist($user);
    $entityManager->flush();

    return $this->json(['success' => 'User created']);
}

请求有效负载如下所示:

/**
 * @Route("/register", name="register", methods={"POST"})
 * @param Request $request
 * @param UserPasswordEncoderInterface $passwordEncoder
 * @return JsonResponse
 */
public function register(Request $request, UserPasswordEncoderInterface $passwordEncoder)
{
    $user = new User();
    // encode the plain password
    $user->setPassword(
        $passwordEncoder->encodePassword(
            $user,
            $request->request->get('password')
        )
    );

    $user->setEmail($request->request->get('email'));
    $user->setName($request->request->get('name'));

    $entityManager = $this->getDoctrine()->getManager();
    $entityManager->persist($user);
    $entityManager->flush();

    return $this->json(['success' => 'User created']);
}

当我和邮递员一起尝试时,我得到了同样的结果。我可能做错了什么?

您需要在后端创建一个表单类型来验证新注册的用户,请选中此项。不要忘了更新控制器。

在您的小树枝中,您必须定义


let registerPath=“{app.request.getSchemeAndHttpHost()~path('register')}”;

在js中,您可以像这样使用ajax帖子:

this.form.post(registerPath).then((响应)=>{
控制台日志(响应);
});


希望这能有所帮助:)

谢谢,但这不是问题所在。这条路是正确的。