【问题标题】:How to call .NET page method using VB.NET and AJAX如何使用 VB.NET 和 AJAX 调用 .NET 页面方法
【发布时间】:2021-08-17 00:28:59
【问题描述】:

在我的网页中,我有以下 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 方法不会执行。相反,页面只是重新加载,名称和密码的输入框被清除。我希望执行 doLoginSuccess() 或 doLoginFailed() 方法。

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

这是使用表单身份验证的 Web 应用程序的登录页面,如果这很重要的话。

我错过了什么?

【问题讨论】:

    标签: javascript ajax vb.net scriptmanager


    【解决方案1】:

    我很确定 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.');
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-06
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      相关资源
      最近更新 更多