繁体   English   中英

symfony 在真正比较来自 ajax 的请求后重定向到另一个页面

[英]symfony Redirect to an other page after true comparison of request from ajax

我的 JavaScript 中有一个返回数据的函数。 我想将数据发送到我的控制器并使用我的 js 中的数据进行测试。 然后,如果为真,我想显示另一个页面。

$.ajax({
        type: "POST",
        url: path,
        data: { s_certifiedNir: a.Patients[0].s_certifiedNir },

        success: function (data) {

           console.log('yooo' + a.Patients[0].s_certifiedNir) ;


        }
        ,
        error: function () {
            alert('ko');
        }

    });

这是我的控制器:

public function getCpsInfosAction(Request $request)
{
    $nir= $request->get('s_certifiedNir');
    if ($request->isXmlHttpRequest()) {
        $encoders = array(new XmlEncoder(), new JsonEncoder());
        $normalizers = array(new ObjectNormalizer());
        $serializer = new Serializer($normalizers, $encoders);
        $data = $serializer->normalize($nir);
        if ($data=='2550699999999 34')
        {
            return $this->redirectToRoute('test');
        }

        //return new  JsonResponse($data);
    }

}

我得到了 ko 并且没有名称空间“DMP”的注册路径。 DMP 是我页面的第一条路线。

为什么不直接在响应中设置重定向 URL 并在您的 JS 中处理它?:

public function getCpsInfosAction(Request $request)
{
    if ($request->isXmlHttpRequest()) {
        // ...
        if ($data === '2550699999999 34') {
            return new JsonResponse([
                'success'  => true,
                'redirect' => $this->generateUrl('your_route');
            ]);
        }

        return new JsonResponse(['success' => false]); // else..
    }
}

然后只需从 JavaScript 运行重定向:

$.ajax({
    // ...
    success: function (data) {
        if (data.success) {
            window.location.href = data.redirect; // <-- HERE
        }
    },
    // ...
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM