ajax错误返回 - 不返回变量

时间:2014-10-13 23:20:00

标签: ajax django

我是ajax的新手,所以希望这是一个简单的疏忽。

基于django updown app

,我有以下代码用于upvotes
$(document).ready(function() {
   $("#custom-post-up").submit(function(event){
        event.preventDefault();
        $form=$('#custom-post-up');
        var datastring = $form.serialize();
        $.ajax({
            type: "POST",
            url: $form.attr('action'),
            dataType: 'html',
            data: datastring,
            success: function(result)
            {
                $('#custom-post-message').html(result);
                $('#custom-post-rating').load('/post/{{ id }}/rating/');
            },
            error: function(result)
            {
                $('#custom-post-message').html(result);
            }
        });
        return false;
   });
});

问题 - 错误消息未生成。如果我输入一个字符串,它工作正常。 例如:

error: function(result)
            {
                $('#custom-post-message').html("error");
            }

此外,成功消息也可以正常工作。

我想要获取的错误消息来自updown app中的视图:

def authentication_required_response(self, request, context):
    response = HttpResponse('You must be logged in to vote.')
    response.status_code = 403
    return response

此视图中的成功消息正常工作:

def rating_changed_response(self, request, context):
    response = HttpResponse('Vote changed.')
    return response

谢谢!

1 个答案:

答案 0 :(得分:2)

使用AJAX应该记住两件事:

  1. 如果您通过回答收到字典,请访问您需要的密钥
  2. 解析AJAX正在接收的响应
  3. 访问您需要的密钥

    您似乎正在通过变量result发送字典。您通过以下方式收到AJAX响应:

    ...   ...   ...
    success: function(result)
        {
            $('#custom-post-message').html(result);
            $('#custom-post-rating').load('/post/{{ id }}/rating/');
        },
    
    ...  ... ...
    

    你正在做$('#custom-post-message').html(result);,但结果是字典

    result = { readyState=4, responseText="You must be logged in to vote.", status=403, more...}
    

    您需要使用以下密钥进行访问:

    result['responseText'] 
    result['readyState']
    result['status']
    

    解析AJAX正在接收的响应

    这意味着当您将响应发送到AJAX函数时,您可以传递一个字符串。您需要将解析后的响应发送给JSON。

    在我的Django项目中,我使用JSON函数来解析(json.dump(variable))和json.loads(variable)以解析