0

ajax を介して値を正常に送信するサインイン フォームを実装しました。値がデータベースのいずれかに一致すると、すべてがセットアップされ、値が一致しない場合、ユーザーは接続されません。

問題は、コントローラーからの応答として常に 200 ステータスを取得していて、プロセスが正しかったのか間違っていたのかわかりません。

技術的にすべてがうまくいった場合、PHPは常に200ステータスを返すことは知っていますが、コントローラーから正しい値を設定して取得するにはどうすればよいですか?

ここに私のコードの一部があります:

//コントローラ

[...]
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がアクティブになっているときとアクティブになっていないときの両方を処理しているので、1つだけを使用していた場合は、2つの異なるルートを使用する必要がありました。

于 2012-11-06T20:10:47.290 に答える
0

多分私は何かが欠けているかもしれませんが、なぜこれをやらないのですか?

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