页面上有一个用来新建的表单,希望每次都能从服务器获取一个新的表单页,在dataGrid中使用如下代码:
<script type="text/javascript"><!--
$(function() {
......
toolbar: [{
id: 'myadd',
text: '新建',
iconCls: 'icon-add',
handler: function() {
$('#mywindow').window({
href: '__APP__/newform'
});
$('#mywindow').window('open');
}
}
......
});
--></script>
|
发现open动作只有在第一次时会向服务器发出请求,之后就只使用第一次请求后得到的window内容,这样,如果填写过这个表单,关闭之后,再点“新建”,上次填写的数据仍然残留。
修改代码,使其在打开之后刷新:
<script type="text/javascript"><!--
$(function() { ......
toolbar: [{
id: 'myadd',
text: '新建',
iconCls: 'icon-add',
handler: function() {
$('#mywindow').window({
href: '__APP__/newform'
});
$('#mywindow').window('open');
$('#mywindow').window('refresh'); }
}
......
});
--></script> |
又有了新的问题,虽然在第一次点击“新建”之后,填写表单,关闭,再点“新建”时一切正常,但是第一次点新建时,会加载两次window内容。
究其原因,是因为首次open时会向服务器发出请求,而紧接着refresh又向服务器发出了一次请求。
将代码修改为第一次新建时调用open,之后的新建调用refresh,发现没有open的refresh不能正常获取url指向的数据。
再次修改代码,利用了一个标志变量,在第一次新建时仅调用open,之后的新建顺序调用open和refresh,问题解决。
<script type="text/javascript"><!--
$(function() {
var windowOpend = false;
......
toolbar: [{
id: 'myadd',
text: '新建',
iconCls: 'icon-add',
handler: function() {
$('#mywindow').window({
href: '__APP__/newform'
});
$('#mywindow').window('open');
if (windowsOpened) $('#mywindow').window('refresh');
if (!windowsOpened) windowsOpened = true;
}
}
......
});
--></script> |
阅读(4372) | 评论(0) | 转发(0) |