0

我已经实现了一个通过 ajax 成功提交其值的登录表单。当值与数据库之一匹配时,一切都已设置,当值不匹配时,用户自然不会连接。

问题是,作为控制器的响应,我总是得到 200 状态,我无法判断该过程是对还是错。

我知道 php 在技术上一切正常时总是返回 200 状态,但是我如何设置并从我的控制器获取正确的值,我可以在我的 javascript 代码中读取并能够判断事情是否正常?

这是我的代码的一些部分:

//控制器

[...]
if ($logForm -> isValid()) {
            //Check user infos in database
            [...]

            if ( ! $user) {
                //We set an error
                $resp = array('responseCode' => 400, "message" => "Bad authentification");
            } else {

                $resp = array('responseCode' => 200, "message" => "Good authentification");
            }

            $resp = json_encode($resp);
            return new Response($resp, 200, array('Content-Type'=>'application/json'));
        }
[...]

//jQuery

$('#signInForm').submit(function(e) {
    e.preventDefault();
    var form = $(this).closest('form');
    //console.log(form);

    if(form) {
        $.ajax({
            type: "POST",
            url: Routing.generate('ajax_sign_in'),
            data: form.serialize(),
            cache: false,
            statusCode: {
                200: function(v) {
                    console.log("Success");
                },
                400: function(e) {
                    console.log("Error");
                }
            },
            dataType: 'json',
        });
    } else {
        alert("Error submitting form");
    }
})

非常感谢您的帮助!

4

2 回答 2

0

谢谢你们花时间帮助我!我终于让它工作了。此代码正在运行。问题来自路由。由于我在激活 javascript 和未激活 javascript 时都在处理,所以当我只使用一个时,我应该使用两条不同的路由。

于 2012-11-06T20:10:47.290 回答
0

也许我错过了一些东西,但为什么不这样做呢?

return new Response($resp, $resp['responseCode'], array('Content-Type'=>'application/json'));
于 2012-11-06T15:12:37.940 回答