繁体   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