使用JavaScript中的异步Web方法返回值触发/阻止页面事件
Trigger/Prevent page event by using asynchronous webmethod return value in JavaScript
我使用Web方法来确定用户是否可以"删除记录"。
以下是添加此访问控制之前的JavaScript代码。
$(".apply-delete-msg").live('click', function() {
return confirm("Are you sure you want to delete this item(s)?);
});
现在它将调用webMethod来验证访问
<WebMethod(EnableSession:=True)> _
Public Function CanAccess() As Boolean
Return ServerCode.IsAccessable
End Function
新的JavaScript:
$(".delete-msg").live('click', function() {
MPWebService.CanAccess(
//B
function(boolRes) {
if (boolRes == true){
return confirm("Are you sure you want to delete this item(s)?");}
else{
alter("can't access");
return false;
}
});
// **Here is Comment A**: Return true/false
});
如果用户可以访问并确认删除/无法访问或取消删除,我希望".Live"方法返回true/false。
但如果我是对的,该方法将首先调用CanAccess,然后调用Comment A:,最后调用(即函数(boolRes))。
因为boolRes的值在函数(boolRess)内部,并且它最终被处理,所以我很难在Comment a位置从该方法获得返回值。
有什么建议吗?
Web服务调用是异步的,在您从单击消息返回后将返回一个结果。因此,您总是需要从单击方法返回false
并重新设计页面,以便在web服务方法返回后执行通常在客户端单击后发生的操作(返回true)。在等待通话完成时,如果能收到一条"请稍候…"的信息,那也很好。
有两种方法:
- 在boolRes==true块中执行注释A代码
- 创建一个包含注释a代码的回调,并在boolRes==true块中调用此回调
相关文章:
- 如何获取事件的返回值
- 为什么当我调用具有返回值的函数时,我的 onclick 事件不起作用
- 如何获取 jQuery 事件处理程序返回值
- 将函数的 JavaScript 返回值存储到服务器端的相应 Asp Control OnClick 事件
- 从事件返回值 onreadystatechange in AJAX 中
- 从更改事件返回“已检查”的值
- 失败事件返回 false 值的制表符,当使用辐射窗口时
- 如何从ajax成功事件返回多个值
- 当用户在输入类型号上输入小数时,事件返回null值
- 使用JavaScript中的异步Web方法返回值触发/阻止页面事件
- 如何将javascript事件函数的返回值分配给javascript变量
- 我想从数据库加载事件日历,返回值失去效果和日期不显示
- 将函数的返回值传递给事件处理程序
- 从AJAX onreadystatechange事件返回值
- 在控制器方法返回值之前,首先执行提交按钮的单击事件
- 如何在javascript中动态调用事件处理程序并获取其返回值
- 如何使用更改事件返回流星中所选选项值的ID ?
- 如何在承诺中从事件处理程序返回值
- 异步onload事件同步返回值
- 覆盖事件处理程序中的返回值