如果它不是空值,则仅将数据添加到ajax调用

时间:2018-01-22 07:41:49

标签: javascript jquery ajax

我有这个div

<div class='additional_comments'>
    <input type="text" id='additional_comments_box', maxlength="200"/>
</div>

如果jinja使用if语句呈现它,那么它有时只会出现在页面上。

这是我必须发送ajax请求的JavaScript:

$(document).ready(function() {

    var button = $("#send");

    $(button).click(function() {
        var vals = [];
        $("#answers :input").each(function(index) {
            vals.push($(this).val());
        });
        vals = JSON.stringify(vals);
        console.log(vals);
        var comment = $('#additional_comments_box').val();

        var url = window.location.pathname;
        $.ajax({
        method: "POST",
        url: url,
        data: {
            'vals': vals,
            'comment': comment,
            },
        dataType: 'json',
        success: function (data) {
            location.href = data.url;//<--Redirect on success
        }
        });
     });

    });

正如你所看到我得到了注释div,我想在我的ajax请求中将它添加到data,但是如果它不存在,我该如何阻止它被添加。

由于

1 个答案:

答案 0 :(得分:1)

您可以使用.length属性来检查元素是否存在,因为它填充了对象。

//Define object
var data = {}; 

//Populate vals
data.vals = $("#answers :input").each(function (index) {
    return $(this).val();
});

//Check element exists
var cbox = $('#additional_comments_box');
if (cbox.length){ 
    //Define comment
    data.comment = cbox.val();
}

$.ajax({
    data: JSON.stringify(data)
});