JS怎么实现在执行一个命令后只自动刷新一次当前页面

nihao6154 2013-11-20 04:37:43
这个问题纠结了好几天没解决,哎,今天实在没办法,只能在此论坛上能遇到帮我解决这个问题的高手,据说这里藏龙卧虎,下面进入正题:

这是我一个WEB项目的某个界面,注意下有个“用户状态”一字段,这一字段是发送开户,停户,添加授权,取消授权等指令发送给网关之后,网关返回信息如果是成功的,状态值会发生改变为“已开户”,“已授权”,“已停户”等,问题就出现在这,因为只有停户是在这个页面处理,其他的点击后都会进入到另外一个页面去处理,所以当点击停户的时候,停户成功以后,必须手动点击刷新按钮,那个“用户状态”字段才能改变为“已停户”,这显然不符合操作规定,所以想问下大侠们,有没有办法我发送停户指令后,网关返回的是成功的时候,自动刷新一次页面数据,(只在发送这个指令后刷新一次,不能刷新多次),或者大家有更好的办法来实现我要的效果,大侠们帮帮忙,我感激不尽,下面是上图页面的JSP代码
<script type="text/javascript">
//相对路径
var rootPath = "";


//列表结构
var grid = $("#maingrid").ligerGrid({
columns: [
{display:"编号",name:"id",width:80},
{display:"用户姓名",name:"userName",width:80},
{display:"用户卡号",name:"cardId",width:150},
{display:"用户状态",name:"statusFlag_t",width:80},
{display:"用户类型",name:"businessType",width:80},
{display:"联系电话",name:"phone",width:80},
{display:"电子邮件",name:"email",width:100},
{display:"地址",name:"address",width:100},
{display:"其他信息",name:"otherInfo",width:100},
{display:"创建时间",name:"createTime_t",width:130, type:"date"}],
dataAction:'server', pageSize: 10, toolbar: {},
url: rootPath + 'userClient.html?m=getdata', sortName: 'id',
width: '98%', height: '100%',heightDiff:-10, checkbox: true
});

//双击事件
LG.setGridDoubleClick(grid, 'modify');

//搜索表单应用ligerui样式
$("#formsearch").ligerForm({
fields:[
{display:"用户卡号",name:"cardId",attr: { op: "equal", vt: "string" },newline:false,labelWidth:80,width:180,space:30,type:"text",cssClass:"field"},
{display:"创建时间",name:"createTime_1",attr: { op: "greaterorequal", vt:"date" },newline:true,labelWidth:80,width:150,space:3,type:"date",cssClass:"field"},
{display:"~",name:"createTime_2",attr: { op: "lessorequal", vt:"date" },newline:false,labelWidth:10,width:150,space:30,type:"date",cssClass:"field"}],
toJSON: JSON2.stringify
});

//增加搜索按钮,并创建事件
LG.appendSearchButtons("#formsearch", grid);

//加载toolbar
LG.loadToolbar(grid, toolbarBtnItemClick);

//工具条事件
function toolbarBtnItemClick(item) {
switch (item.id) {
case "add":
top.f_addTab(null, '添加用户', 'userClientDetail.html?optype=add');
break;
case "modify":
var selected = grid.getSelected();
if (!selected) { LG.tip('请选择行!'); return }
top.f_addTab(null, '修改用户信息', 'userClientDetail.html?optype=modify&id=' + selected.id);
break;

case "delete":
var selected = grid.getCheckedRows();
var str = "";
$(selected).each(function()
{
str += this.cardId + ",";
});
if (!str) { LG.tip('请选择所要删除的用户!'); return }
jQuery.ligerDialog.confirm('确定删除卡号为'+str+'的用户吗?', function (confirm) {
if (confirm)
f_delete();
});
break;
case "open":
var selected = grid.getSelected();
if (!selected) { LG.tip('请选择行!'); return }
top.f_addTab(null, '开户', 'createLicense.html?type=open&id=' + selected.id);
break;


case "addlisten":
var selected = grid.getSelected();
if (!selected) { LG.tip('请选择行!'); return }
if(selected.statusFlag == 1 || selected.statusFlag == 0){ LG.tip('请先开户!'); return }
top.f_addTab(null, '添加授权', 'createLicense.html?type=addlisten&id=' + selected.id);
break;

case "rewrite":
var selected = grid.getSelected();
if (!selected) { LG.tip('请选择行!'); return }
if(selected.statusFlag == 1 || selected.statusFlag == 0){ LG.tip('请先开户!'); return }
top.f_addTab(null, '覆盖授权', 'createLicense.html?type=rewrite&id=' + selected.id);
break;

case "abrogate":
var selected = grid.getSelected();
if (!selected) { LG.tip('请选择行!'); return }
if(selected.statusFlag == 1 || selected.statusFlag == 0){ LG.tip('请先开户!'); return }
top.f_addTab(null, '取消授权', 'createLicenseDemo.html?type=abrogate&id=' + selected.id);
break;

case "close":
var selected = grid.getSelected();
if (!selected) { LG.tip('请选择行!'); return }
if(selected.statusFlag == 1){ LG.tip('请先开户!'); return }
jQuery.ligerDialog.confirm('确定停户 '+selected.cardId+' 吗?', function (confirm) {
if (confirm)
f_close();
});
break;

}
}
function f_reload() {
grid.loadData();


}
function f_delete() {
var selected = grid.getCheckedRows();
var str = "";
$(selected).each(function()
{
str += this.id + ",";
});
if (selected) {
LG.ajax({
ashxUrl: 'userClient.html?',
type: 'single',
method: 'delete',
loading: '正在删除中...',
data: { id: str},
success: function () {
LG.showSuccess('删除成功');
f_reload();
},
error: function (message) {
LG.showError(message);
}
});
}
else {
LG.tip('请选择用户!');
}
}
function f_close() {
var selected = grid.getSelected();
if (selected) {
LG.ajax({
ashxUrl: 'userClient.html?',
type: 'single',
method: 'close',
loading: '正在停户中...',
data: { id: selected.id },
success: function () {
LG.showSuccess('停户成功');
f_reload();
},
error: function (message) {
LG.showError(message);
}
});
}
else {
LG.tip('请选择应用!');
}
}

function f_abrogate() {
var selected = grid.getSelected();
if (selected) {
LG.ajax({
ashxUrl: 'createLicenseDemo.html?',
type: 'single',
method: 'getdata',
loading: '正在加载取消授权页面...',
data: { id: selected.id },
success: function () {
LG.showSuccess('加载成功');
f_reload();
},
error: function (message) {
LG.showError(message);
}
});
}
else {
LG.tip('请选择授权!');
}
}


</script>
...全文
3525 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
nihao6154 2013-12-04
  • 打赏
  • 举报
回复
哎 ,结贴了,找到原因了,都怪自己粗心大意,再次谢谢大家耐心的回答
m6851778 2013-11-26
  • 打赏
  • 举报
回复
引用 3 楼 ftiger 的回复:
晕,你都用ajax了还刷新什么啊,直接修改返回的那一行的状态就可以了! 这里加参数message,你ajax返回内容里加入执行结果和执行id,然后在这个函数里找到操作行,直接修改操作行的内容 success: function (message) { LG.showSuccess('停户成功'); f_reload(); },
应该正解 Ajax 异步请求完成后会局部刷新
冰糖-雪梨 2013-11-26
  • 打赏
  • 举报
回复
可以把从url获取数据封装成一个函数吧 操作后调用一下这个函数重新加载数据 以前用easyui的时候是这样子干的
notlikeGaoShou 2013-11-20
  • 打赏
  • 举报
回复
写错了手误,应该是加一个?+new Date()
notlikeGaoShou 2013-11-20
  • 打赏
  • 举报
回复
引用 1 楼 wzs_xyz 的回复:
window.location.href = window.location.href; 执行即可刷新页面
在需要刷新的时候这么做就可以,或者在后面加一个?new date()
nihao6154 2013-11-20
  • 打赏
  • 举报
回复
引用 7 楼 ftiger 的回复:
[quote=引用 5 楼 nihao6154 的回复:] 那个我想问下,你说在ajax返回内容里加入执行的结果和执行ID,具体应该怎么加,因为这个项目是我接手上一个人的,还不是很熟悉这个框架,麻烦你了,大侠
嗯,事实上也不用返回。 function f_close() {这里有Id了,现在的问题是如何从id反查dom对象,这个没用过ligerGrid这个控件,你去查一下ligerGrid的api吧。 [/quote] http://api.ligerui.com/这里面有ligerGrid的API,但是我在里面没找到你说的这个“从id反查dom对象”这个方法,这该怎么办
ftiger 2013-11-20
  • 打赏
  • 举报
回复
引用 6 楼 nihao6154 的回复:
3楼的大侠还在么,求回复,我这问题很着急
晕死了,你用ff,直接打印selected看看有什么东西。 success: function () { console.log(selected); LG.showSuccess('停户成功'); f_reload(); },
ftiger 2013-11-20
  • 打赏
  • 举报
回复
引用 5 楼 nihao6154 的回复:
那个我想问下,你说在ajax返回内容里加入执行的结果和执行ID,具体应该怎么加,因为这个项目是我接手上一个人的,还不是很熟悉这个框架,麻烦你了,大侠
嗯,事实上也不用返回。 function f_close() {这里有Id了,现在的问题是如何从id反查dom对象,这个没用过ligerGrid这个控件,你去查一下ligerGrid的api吧。
nihao6154 2013-11-20
  • 打赏
  • 举报
回复
3楼的大侠还在么,求回复,我这问题很着急
nihao6154 2013-11-20
  • 打赏
  • 举报
回复
引用 3 楼 ftiger 的回复:
晕,你都用ajax了还刷新什么啊,直接修改返回的那一行的状态就可以了! 这里加参数message,你ajax返回内容里加入执行结果和执行id,然后在这个函数里找到操作行,直接修改操作行的内容 success: function (message) { LG.showSuccess('停户成功'); f_reload(); },
那个我想问下,你说在ajax返回内容里加入执行的结果和执行ID,具体应该怎么加,因为这个项目是我接手上一个人的,还不是很熟悉这个框架,麻烦你了,大侠
  • 打赏
  • 举报
回复
自己找ligerGrid的API是否有updateRow的功能,easyui有,ligerGrid没用过不不知道
ftiger 2013-11-20
  • 打赏
  • 举报
回复
晕,你都用ajax了还刷新什么啊,直接修改返回的那一行的状态就可以了! 这里加参数message,你ajax返回内容里加入执行结果和执行id,然后在这个函数里找到操作行,直接修改操作行的内容 success: function (message) { LG.showSuccess('停户成功'); f_reload(); },
疯狂熊猫人 2013-11-20
  • 打赏
  • 举报
回复
这个插件必然会有与刷新按钮对应的方法。楼主可以看看API。这个插件和jquery-easyui很像
未知数 2013-11-20
  • 打赏
  • 举报
回复
window.location.href = window.location.href; 执行即可刷新页面

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧