如何使用 VB.NET 和 AJAX 调用 .NET 页面方法
How to call .NET page method using VB.NET and AJAX
在我的网页中,我有以下 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>
在codebheind中,我有以下内容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 方法被调用并且 returning False(正如我的测试用例所预期的那样)。但是,doLoginFailed() Javascript 方法不会执行。相反,页面只是重新加载并且名称和密码的输入框被清除。我希望执行 doLoginSuccess() 或 doLoginFailed() 方法。
我试过让 Login() 方法 return 正确,但行为没有改变。
如果重要的话,这是使用表单身份验证的 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.');
}
在我的网页中,我有以下 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>
在codebheind中,我有以下内容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 方法被调用并且 returning False(正如我的测试用例所预期的那样)。但是,doLoginFailed() Javascript 方法不会执行。相反,页面只是重新加载并且名称和密码的输入框被清除。我希望执行 doLoginSuccess() 或 doLoginFailed() 方法。
我试过让 Login() 方法 return 正确,但行为没有改变。
如果重要的话,这是使用表单身份验证的 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.');
}