我之前就是想实现一个弹框,在弹框的时候用ajax 动态加载要展示的内容,这个地方实现起来并不难,但是在实现的时候遇到了一个坑。
页面:
<div id="logDiv" style="display: none;" >
</div>
<a href="#" οnclick="javascript:seeKsLog('${requestScope.ksmap['ID'] }')">查看日志</a> </td>
function seeKsLog(id){
var ksxm = "${requestScope.ksmap['KSXM']}";
var zjhm = "${requestScope.ksmap['ZJHM']}";
var jqxr =$.post("<%=request.getContextPath()%>/syslog/seeKsLog.htm",
{"examineeid":id,"ksxm":ksxm,"zjhm":zjhm},
function(data){
var aaa = "<table width='100%' border='1' cellspacing='0' cellpadding='0'>
<tr><th class='title-bar'><b> 考生姓名 </b></th>
<th class='title-bar'><b>证件号码</b></th>
<th class='title-bar'><b>操作IP</b></th>"
+"<th class='title-bar'><b>操作人员</b></th>
<th class='title-bar'><b>操作时间</b></th>
<th class='title-bar'><b>操作内容</b></th> </tr>";
for(var i=0;i<data.length;i++){
if(data&&data.length>0){
aaa+="<tr> <td> "+ksxm+" </td><td> "+zjhm+" </td>";
aaa+="<td> "+data[i].accessip+" </td>";
if(data[i].managername!=null){
aaa+="<td> "+data[i].managername+" </td>";
}else{
aaa+="<td> 本人 </td>";
}
aaa+="<td> "+data[i].data+" </td><td> "+data[i].miaoshu+" </td></tr>"
}
}
aaa+="<tr><td colspan='6' align='center'>
<font style='color:red'> '提示: 交易结果2表示支付成功,交易结果0表示未支付。'</font>
</td></tr></table>";
$("#logDiv").html(aaa);
});
首先:坑1: 我在拼串的时候用了append()
append():方法在被选元素的结尾(仍然在内部)插入指定内容。 这个地方啥意思?就是插入的内容还是在你选择的那个标签里面
这个地方写完以后,我定义了dialog初始化操作,在$(function(){});里面,但是 在第一打开dialog的时候,总是第一遍没有数据,第二遍才出现,后来才发现,原来是因为加载还没结束,就执行下面的打开操作了。所以给函数加一个complete的方法,等加载完成后再执行dialog的open操作。
jqxr.complete(function(){
var cont = $("#logDiv").html();
alw(cont);
});
function alw(aa){
art.dialog({
title:'考生操作日志',
content:aa,
//icon:'question',
lock:true,
resize:false,
button:[
{name:'关闭',callback:function(){
return true;
}}]
});
}
这么搞没问题