Странное асинхронное поведение Javascript и WebMethod - PullRequest
0 голосов
/ 13 июля 2011

Я вызываю PageMethod в JavaScript.Как это:

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-я строка кода в функции)Я получаю ОБА ящиков с предупреждением, прежде чем смогу войти в свой код.Два предупреждения, и ТОГДА мой код ломается.

Это не имеет смысла для меня.Я что-то упустил?

Спасибо,

Джейсон.

PS - Вот источник функции 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 ]

1 голос
/ 13 июля 2011

Вместо передачи возвращаемого значения ваших функций-обработчиков, т.е. onSuccess () и onError1 (), передайте сами функции, т.е. onSuccess и onError1.

0 голосов
/ 13 июля 2011

Существует тег stateNetworkTimeout, связанный с sessionState. Как это:

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

У меня не было stateNetworkTimeout, конечно, каждый раз он бомбил.

Спасибо, мистер!

0 голосов
/ 13 июля 2011

Должно быть:

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