簡體   English   中英

在Django視圖中對接收到的數據應用Ajax成功方法中的條件

[英]Apply conditions in Ajax success Method on received data from Django's view

我正在一個Django項目中,我需要通過ajax處理表單。我正在向Django視圖發送ajax請求並以JSON格式返回響應,現在我需要對該數據應用if-else條件,但是這些條件不起作用,在任何情況下都請始終運行第一個條件。

這是我的代碼:

Django的觀點:

            auth = getauth()
            service = discovery.build('cloudbilling', 'v1', http=auth, cache_discovery=False)
            name = 'projects/' + projectName
            billing_request = service.projects().getBillingInfo(name=name,)
            billing_response = billing_request.execute()
            data = billing_response
            print(json.dumps(data))

            if 'billingAccountName' in data:
                b_response = data
                b_response['msg'] = True
                return HttpResponse(json.dumps(b_response), content_type='application/json')
            else:
                b = {}
                b['msg'] = False
                return HttpResponse(json.dumps(b), content_type='application/json')

這是我的ajax代碼:

    $(document).on('submit', '#projectForm', function (e) {
    var message;
    e.preventDefault();
    $.ajax({
        url: '{% url 'users:selectProject' %}',
        type: 'POST',
        data:{
            project_id:$('#project').val(),
            csrfmiddlewaretoken:$('input[name=csrfmiddlewaretoken]').val(),
        },
        dataType: 'json',
        success:function (data) {
             message = data.msg;
            console.log(message);
            if(data.msg = 'false'){
                console.log('Message is False');
                $('#message').addClass('show');

            }else if(data.msg = 'true') {
                console.log('Message is True');
                $('#message2').addClass('show');
                $('#enableApi').prop('disabled', false);
                $('#project_btn').prop('disabled', true);
            }
        }
    });
})

即使console.log('message')顯示為true,它也始終顯示'Message is False'。

我究竟做錯了什么?

請幫幫我!

提前致謝!

問題似乎與條件語句有關

if(data.msg = 'false'){..}else if(data.msg = 'true'){..}

這兩個語句分配值,而不是檢查條件

用double(==)或三重equals(===)替換單個equal(=)。 還要注意( == )和( === )之間的區別。 ===中將沒有類型轉換。

if(data.msg === false){..}else if(data.msg === true){..}

==不應該在這里使用,因為檢驗報告JavaScript的平等經營用途可能導致意外的類型coercions.It被認為是一個很好的做法,使用類型安全的相等運算符===代替定期對口==

因此,可以使用===代替==來解決

           if(data.msg === false){
                console.log('Message is False');
                $('#message').addClass('show');

            }else if(data.msg === true) {
                console.log('Message is True');
                $('#message2').addClass('show');
                $('#enableApi').prop('disabled', false);
                $('#project_btn').prop('disabled', true);
            }

這個:

   if(data.msg = 'false'){

應該:

  if(data.msg == 'false'){

如果要比較,請使用“ ==”,但如果要設置值,請使用“ =”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM