使用Jquery创建注册


Create registration with Jquery

创建jquery脚本

function send_form() {
    var data = $('#registration').serialize();
    alert(data);
    $.ajax({
        type: "POST",
        url: "{{ path('registrationAction') }}",
        data: data,
        success: function (data) {
            if(data.success == true){
                alert("Ok");
                window.location.replace("{{ path('userRedirectAction') }}");
            }
            else
                alert("False");
            }
        }
    );
}

这只是一部分。如果我警报(数据),我有我需要的我的控制器

public function registrationAction(Request $request)
{
    $response = new JsonResponse();
    $form = $this->createForm(new UsersType());
    if($request->getMethod() == 'POST')
    {
        $data = $request->request->get('pyramida_modelbundle_users');
        $username = $data['username'];
        $password = $data['password'];
        $email = $data['email'];
        $refer = $data['refer_id'];
        $user = new Users();
        $user->setUsername($username);
        $user->setPassword($password);
        $user->setEmail($email);
        $user->setReferId($refer);
        $em = $this->getDoctrine()->getManager();
        $em->persist($user);
        $em->flush();
        $response->setData(array("success" => true));
        return $response;
    }
    return $this->render("CoreBundle:Registration:registration.html.twig", array('form' => $form->createView()));
}

我认为我的JQuery有问题,因为注册后用户没有重定向到你的页面。请帮忙查找错误

您错过添加dataType : 'json'

这是你的解决方案。

$.ajax({
                type: "POST",
                url: "{{ path('registrationAction') }}",
                dataType : 'json',
                data: data,
                success: function (data) {
                    if(data.success == true){
                        alert("Вы успешно зарегистрированы");
                        window.location.replace("{{ path('userRedirectAction') }}");
                    }
                    else
                        alert("Произошла ошибка при регистрации");
                    }
                }
        );