1

脚本.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 回答