/ / Beird Asymchronous Javascript & WebMethod Behavior - javascript, asp.net, asynchrone, méthode Web, méthodes de recherche de page

Comportement bizarre de Javascript et de méthodes Web asynchrone - javascript, asp.net, asynchrone, méthode Web, méthodes de recherche de page

J'appelle un PageMethod en javascript. Comme ceci:

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);}

Maintenant, voici la partie étrange: On pourrait penser qu'appeler PageMethods donnerait une (1) alerte lors de l'exécution. Soit la fonction onSuccess ou la fonction onError1. MAIS - Je reçois deux alertes, les deux disant "Undefined".

En fait, quand je mets un point d'arrêt dansVB code-behind (comme la 3ème ou 4ème ligne de code dans la fonction), je reçois les deux boîtes d’alerte avant de pouvoir entrer dans mon code derrière. Deux alertes et ALORS mon code est cassé.

Cela n'a aucun sens pour moi. Est-ce que je manque quelque chose?

Merci,

Jason

P.S. - Voici la source de la fonction WebMethod. Notez également qu’il effectue un appel 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

Réponses:

0 pour la réponse № 1

Devrait être:

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

1 pour la réponse № 2

Au lieu de transmettre la valeur de retour de vos fonctions de gestionnaire, à savoir onSuccess () et onError1 (), transmettez les fonctions elles-mêmes, à savoir onSuccess et onError1.


0 pour la réponse № 3

Il existe une balise stateNetworkTimeout impliquée dans le sessionState. Comme ceci:

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

Je n’ai pas eu un état StateNetworkTimeout, bien sûr, il a bombardé à chaque fois.

Merci Mrchief!