今天测试发现了一个struts标签的问题:我使用iterator遍历一个集合,下面为遍历的数据
<a href="javascript:;" onclick="resell('<s:property value="#log.type.name"/>',<s:property value="#log.id"/>)">返销<input type="hidden" id="resellLogId"/></a>
点击链接时,响应事件弹出一个easyDialog,回调函数发送ajax请求,并需要获取该条记录的id作为参数,代码如下:
var btnFn = function( e ){
alert($("#resellLogId").val());
$.ajax({
url : "resell!repay",
dataType : "json",
type :"post",
data :{
repayId : $("#resellLogId").val()
},
success : function(obj){
if(obj.ok){
alert('返销成功');
location = "toUserInfo!queryPay";
}
else{
alert("返销失败");
return false;
}
}
});
return true;
};
// 返销
function resell(typename,remark,amount,id){
$("#resellLogId").val(id);
alert($("#resellLogId").val());
easyDialog.open({
container : {
header : '返销确认',
content : '<form action="" method="post">充值类型:<span>'+typename+'</span><br/><br/>充值账号:<input name="" readonly="readonly" type="text" value="'+remark+'"><br/><br/>' +
'充值金额:<input readonly="readonly" type="text" value="'+amount+'" />元<br/>'+
' </form>',
yesFn : btnFn,
yesText : '确认返销' ,
noFn : true
},
fixed : false
});
};
一开始的问题是:无论是选择哪条记录,它获取的都是第一条记录的id。记录的id通过$("#resellLogId")获取。
猜想的原因是struts迭代valuestack存放的值的问题。直接在遍历中传值传的都是第一条的值。
解决办法:在点击事件时,给resellLogId动态赋值,这样相当于把需要的记录绑定,回调函数再通过id获取其值。结果就解决了。