如何使用VB.NET和AJAX调用.NET页面方法



在我的网页中,我有以下JavaScript。。

function doLogin() {
var u = document.getElementById('username').value;
var p = document.getElementById('password').value;
var result = PageMethods.Login(u, p, doLoginSuccess, doLoginFailed);
}
function doLoginSuccess(response, userContext, methodName) {
alert('Login successful.');
}
function doLoginFailed(response, userContext, methodName) {
alert('Login failed.')
}

和一个调用doLogin((方法的按钮:

<button onclick="doLogin()">Log In</button>

在代码库中,我有以下vb.NET:

<System.Web.Services.WebMethod()>
Public Shared Function Login(Username As String, Password As String)
If UserValidate(Username, Password) Then
Return True
Else
Return False
End If
End Function

通过代码,我可以看到我的.NET方法被调用并返回False(正如我的测试用例所预期的那样(。但是,doLoginFailed((Javascript方法不会执行。相反,页面只是重新加载,名称和密码的输入框就会被清除。我希望执行doLoginScess((或doLoginFailed((方法。

我试过让Login((方法只返回True,但行为没有改变。

如果重要的话,这是使用Forms身份验证的web应用程序的登录页。

我错过了什么?

我很确定webmethod只需要一次回调,所以你必须检查响应以确定的成功或失败

function doLogin() {
var u = document.getElementById('username').value;
var p = document.getElementById('password').value;
var result = PageMethods.Login(u, p, doLoginCallback);
}
function doLoginCallback(response, userContext, methodName) {
if (response)
alert('Login successful.');
else
alert('Login failed.');
}

最新更新