【问题标题】:Trigger/Prevent page event by using asynchronous webmethod return value in JavaScript使用 JavaScript 中的异步 webmethod 返回值触发/阻止页面事件
【发布时间】:2012-02-29 11:49:00
【问题描述】:

我使用网络方法来识别用户是否可以“删除记录”。

这是添加此访问控制之前的 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”方法返回真/假。

但如果我是对的,该方法将首先调用 CanAccess,然后是 Comment A:,最后是 Comment B,即 >function(boolRes).

因为 boolRes 的值在函数(boolRes) 内部并且最后被处理,所以在 Comment A 位置从该方法获取返回值对我来说很棘手。

有什么建议吗?

【问题讨论】:

    标签: javascript jquery .net ajax web-services


    【解决方案1】:

    Web Service 调用是异步的,并且会在您从点击消息返回后返回结果。因此,您始终需要从 click 方法返回 false 并重新设计您的页面,以便在客户端单击(并返回 true)后正常执行的操作在 Web 服务方法返回后执行。在等待呼叫完成时有一条“请稍候...”消息也很好。

    【讨论】:

    • 有道理。但是如果点击事件总是返回false,它如何触发服务中的删除功能。用JS调用服务端事件?
    • 你能给我一个简单的例子吗?
    • 您是否有与 .delete-msg 点击相关的回发操作?您可能有,这是您想要在 Web 方法调用后启动的操作。 Return false 将保证不会从 click 事件处理程序调用回发。您可以使用 doPostBack 进行回发(例如,请参阅此问题:stackoverflow.com/questions/2738327/…
    • 好像不行。我将 e.preventDefault() 放在外部函数中,将 e.trigger 放在内部函数中,它不是服务器端操作。然后我把return true放在outer里面,e.preventDefault()放在inner里面,还是调用server-side-action,mb不是用webmethod的好地方,能非异步吗?
    【解决方案2】:

    有两种方法:

    • 在 boolRes==true 块中添加注释 A 代码
    • 创建一个包含注释 A 代码的回调,并在 boolRes==true 块中调用此回调

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-17
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 2012-05-05
      • 2019-12-13
      相关资源
      最近更新 更多