朋友
我有以下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感到无能为力。
请建议合适的方式
答案 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参数一样。