1

ページに ajax を使用する関数があります。ajax は Django ビューに送られ、そこから何らかのデータが返されます。残念ながら、現時点では 1 つのデータしか返すことができません。2 番目は文字列 "success" として返されます。これが私が行っていることです:

アヤックス:

 success: function(data, message) { 
            if(data === 'False'){
                    $('#mailsquare').css('background-color', '#A80000');
                    $('.dropdown-menu').prepend('<li class="message" id="{{item.id}}">'+message.substring(0,30)+'</li>');
            } else {
                    $('#mailsquare').css('background-color', '#1b1b1b');
            }
   },

意見:

@login_required
def checkMail(request):

    user = request.user.get_profile()

    i = inbox.objects.get(user = user)
    read = i.read

    new = i.message.order_by('created')[:1]

    return HttpResponse(read, new)

prepend ステートメントは、受け取った "メッセージ" 値を使用せず、文字列 "success" を挿入するだけです。「データ」パラメータは正しく処理されます。

4

2 に答える 2

4

メソッドは次のsuccessように定義されます。

success: function(data, textStatus, jqXHR) { 

したがって、message実際にtextStatusは結果です。

これが正しく機能するには、ビューからデータを正しく送信する必要があります。

それを行う1つの方法は次のとおりです。

@login_required
def checkMail(request):
    user = request.user.get_profile()
    read = inbox.objects.get(user = user).read    
    newest = i.message.order_by('created')[:1]

    return HttpResponse(simplejson.dumps({'read': read, 'newest': newest}))

そしてjsで

success: function(data, textStatus, jqXHR) { 
    var read = data.read;
    var newest = data.newest;
    //rest of the stuff    
}
于 2013-08-09T17:20:51.367 に答える
0

ajaxのデータを間違って返す

def answer(request):    
     # same you code
     payload = {'success':True,'param1': 'you_value', 'param2':'you_value2'}
     return HttpResponse(json.dumps(payload), content_type='application/json')

JavaScriptで

success: function(data) { 
        if(data.success === false){
                alert(data.param1);
                alert(data.param2);

        } else {
                $('#mailsquare').css('background-color', data.param1);
                $('#mailsquare').html(data.param2);
        }},
于 2013-08-09T17:23:37.130 に答える