0

我正在开发一个 Django 项目,在该项目中我需要通过 ajax 处理表单。我正在向 Django 视图发送 ajax 请求并以 JSON 格式取回响应,现在我需要在该数据上应用 if-else 条件但是这些条件不起作用,无论如何都要运行第一个条件。

这是我的代码:

姜戈的观点:

            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')显示为真,它也总是显示“消息为假”。

我究竟做错了什么?

请帮帮我!

提前致谢!

4

3 回答 3

0

这个:

   if(data.msg = 'false'){

应该:

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

如果你想比较使用'==',但如果你想设置一个值使用'='

于 2017-11-03T15:03:37.590 回答
0

问题似乎与条件语句有关

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

这两个语句正在分配值,而不是检查条件

将单等号(=)替换为双等号(==)或三等号(===)。==还要注意 ( ) 和 ( )之间的区别===。中不会有类型转换===

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

于 2017-11-03T04:41:04.990 回答
0

此处不应使用 ==,因为检查报告了 JavaScript 相等运算符的用法,这可能会导致意外的类型强制。使用类型安全的相等运算符 === 而不是其常规对应运算符 == 被认为一种习惯

因此,可以通过使用===而不是==来解决

           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);
            }
于 2017-11-03T04:49:02.653 回答