在Ajax成功中应用条件方法从Django的视图接收数据

时间:2017-11-03 04:37:10

标签: javascript jquery ajax django django-ajax-selects

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

这是我的代码:

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。

我做错了什么?

请帮帮我!

提前致谢!

3 个答案:

答案 0 :(得分:0)

问题似乎与条件陈述

有关

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

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

用double(==)或三等于(===)替换单个等号(=)。另请注意(==)和(===)之间的区别。 ===中没有类型转换。

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

答案 1 :(得分: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);
            }

答案 2 :(得分:0)

这:

   if(data.msg = 'false'){

应该是:

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

如果您想比较使用' ==',但如果您想设置值,请使用' ='