1

script.js

$('#loginform').submit(function(e){
    $.ajax({
        type:"POST",
        url:"/accounts/login/ajax/",
        data:$('#loginform').serialize(),
        success: function(msg){
            var msg = msg;
            msg = JSON.parse(msg);
            $('#messagestatus').html('');
            if(msg.username != null){
                $('#messagestatus').append(msg.username);
            }
            if(msg.password != null){
                $('#messagestatus').append(msg.password);
            }
        }
    });
    e.preventDefault();             
});

返されたオブジェクト

{'username':['Required'],'password':['Required']}

私が使用JSON.parseしていて警告しているときは正しいエラーが表示されていますが、messagestatusdivに追加しているときは応答しません。助けてください。

4

3 に答える 3

2

ユーザー名とパスワードはjsonの配列です。jsonが次のようになるようにします

    {'username':'Required','password':'Required'}

またはスクリプトを変更します。

    if(msg.username.length > 0)
    {
       $('#messagestatus').text(msg.username[0]);
    }
    if(msg.password.length > 0)
    {
       $('#messagestatus').text(msg.password[0]);
    }
于 2012-08-10T21:52:46.903 に答える
1

重要かもしれませんが、重要ではないかもしれませんが、json オブジェクトは実際にはサブ配列で構成されています。

{'username':['Required'],'password':['Required']}
            ^----------^            ^----------^

つまり、JS でデコードされたデータ構造は実際には

obj['username'][0]   and        obj['password'][0]
于 2012-08-10T21:53:02.723 に答える
0

まず、パラメーターを関数で再宣言する必要はありません。

次に、$。parseJSON()を使用してjsonを解析します。

msg = $.parseJSON(msg);

JSONには配列が含まれています。配列全体ではなく、最初の文字列にアクセスするにはmsg["username"][0]を使用してください。

そして、私はe.preventDefault();を置きます。AJAXの前の最初のステートメントとして。

そして、.html('')=> .empty()ですが、同じ結果です。

于 2012-08-10T22:01:09.313 に答える