奇怪的异步Javascript& WebMethod行为

时间:2011-07-13 16:50:37

标签: javascript asp.net asynchronous webmethod pagemethods

我在javascript中调用了一个PageMethod。像这样:

function DeleteBatchJS2()
  {$find('mdlPassword').hide();
    var pswd = $('#txtPassword').val();
    var userInfo = get_cookie("UserInfo");
    PageMethods.AuthenticateAndDelete(
        userInfo,
        pswd,
        onSuccess(),
        onError1());    
  }         

function onSuccess(result)
  {alert(result);}

function onError1(result)
  {alert(result);}

现在这里有一个奇怪的部分:人们会认为调用PageMethods会在运行时发出一(1)个警报。 onSuccess函数或onError1函数。但是 - 我收到两个警报,都说“未定义”。

事实上,当我在VB代码隐藏中设置一个断点时(比如函数中的第3行或第4行代码),在我可以进入后面的代码之前,我会得到两个警告框。两个警报,然后我的代码中断。

这对我没有意义。我错过了什么吗?

谢谢,

杰森。

P.S。 - 这是WebMethod功能的来源。还请注意它确实进行了WCF通话。

<WebMethod()> _
Public Shared Function AuthenticateAndDelete(ByVal UserInfo As String, ByVal Password As String) As Boolean
    Dim Client As New LetterWriterClient
    Dim bo As New BatchOperations
    Dim UserNumber As String
    Dim UserName As String


    'Extract the user name and number from the user info cookie string
    UserName = GetValueFromVBCookie("UserName", UserInfo)
    UserNumber = GetValueFromVBCookie("UserNumber", UserInfo)

    'Now validate the user
    If bo.ValidateActiveDirectoryLogin("Backoffice", UserName, Password) Then
        AuthenticateAndDelete = Client.Delete_dat_BatchSQL(UserNumber)
        Client.Close()
    Else
        AuthenticateAndDelete = False
    End If

End Function

3 个答案:

答案 0 :(得分:1)

不是传递处理函数的返回值,即onSuccess()和onError1(),而是传递函数本身,即onSuccess和onError1。

答案 1 :(得分:0)

应该是:

PageMethods.AuthenticateAndDelete(
        userInfo,
        pswd,
        onSuccess,
        onError1);    
  }    

答案 2 :(得分:0)

sessionState包含一个stateNetworkTimeout标记。像这样:

<sessionState timeout="540" stateNetworkTimeout="5"></sessionState>

我没有stateNetworkTimeout,确实每次都有轰炸。

谢谢先生!