如何将其他隐藏变量传递给jQuery / Ajax Post dataObj?

时间:2014-12-27 18:13:06

标签: jquery ajax jsp

朋友

我有以下jQuery ajax Post调用

function submitForm() {
             var selectedPricingTierId = "";
             var lstIds = new Array();

               jQuery('input[type=checkbox]').each(function () {
                   if(this.checked && this.id !="select_all"){
                   if(selectedPricingTierId == "") {
                        selectedPricingTierId = this.id;
                    } else {
                        selectedPricingTierId = selectedPricingTierId + "," + this.id;
                    }

               }
                });

            var dataObj = {
                    "lstIds" : selectedPricingTierId
                };
                jQuery.ajax({
                    url : getCurrentLocation() + "/saveIncentives.action",
                    type : "POST",
                    data : dataObj,
                    success : function(data) {
                    closeWindow();

                    }
                });
            } 

现在我必须将以下隐藏变量传递给我的dataObj

<s:hidden name="month" id="month" value="%{month}" />
<s:hidden name="year" id="year" value="%{year}" />

我对如何在Post调用中将隐藏变量附加到我的DataObj感到无能为力。

请建议合适的方式

1 个答案:

答案 0 :(得分:0)

你可以这样做:

var dataObj = {};
dataObj.lstIds = selectedPricingTierId;
dataObj.month = $('input[name="month"]').val();
dataObj.year = $('input[name="year"]').val();

或:

var dataObj = {
    "lstIds" : selectedPricingTierId,
    "month" : $('input[name="month"]').val(),
    "year" : $('input[name="year"]').val()
};

这等于相同。

但我建议改变你创建表单然后序列化的方法,并将这些序列化数据传递给你的ajax。

这里是小提琴:jsfiddle和示例代码:

<form id="myForm" action="saveIncentives.action" method="POST">
    <input type="text" name="name" value="John" />
    <input type="checkbox" name="vehicle" value="Bike" />Bike
    <input type="checkbox" name="vehicle" value="Car" />Car 
    <input type="hidden" name="month" value="04" />
    <input type="hidden" name="year" value="2015" />
    <input type="submit" value="Submit" />
</form>

和JS序列化数据:

$('#myForm').submit(function(e){
    e.preventDefault();
    var dataObj = $('#myForm').serialize();

    jQuery.ajax({
        url : $(this).attr('action'),
        type : "POST",
        data : dataObj,
        success : function(data) {
            closeWindow();
        }
    });

    return false;
});

这种序列化数据可以在服务器端轻松读取,就像使用任何POST参数一样。