使用ajax调用aspx.vb方法

时间:2015-01-29 17:52:45

标签: asp.net ajax vb.net

我的问题如下:

我需要调用特定asp.net webform的代码隐藏文件的特定方法。

这是我的jquery(ajax)函数:

function LoadPayments(_page) {

    var cliente = 245328;
    $.ajax({
        type: "POST",
        url: "PayBills.aspx/LoadPayments",
        data: { cod_client: client, page: _page },
        contentType: "application/json: charset=utf-8",
        dataType: "json",
        cache: false
    })
    .done(function (data) {


    });
}

这是PayBills.aspx中的vb函数:

Protected Sub LoadPayments(cod_client As Integer, page As Integer)
        Dim proxy As proxyWAS = New proxyWAS
        gvDocuments.DataSource = proxy.GetDocumentsList(cod_client, page)
        gvDocuments.DataBind()
End Sub

现在我收到此错误:405(方法不允许)

提前感谢您的帮助。

最好的问候

1 个答案:

答案 0 :(得分:3)

您需要在方法上使用 WebMethodAttribute

Imports System.Web.Services

' Other code ...

<WebMethod()> _
Protected Shared Sub LoadPayments(cod_client As Integer, page As Integer)
    'Dim proxy As proxyWAS = New proxyWAS
    'gvDocuments.DataSource = proxy.GetDocumentsList(cod_client, page)
    'gvDocuments.DataBind()
End Sub

检查此this link以获取有关可以设置的属性的信息。

这会调用web方法,但不会更新UI。从AJAX调用执行数据绑定不会更新显示的内容。要么回发,要么可以更新UI,或使用Web方法调用返回HTML,然后可以用来更新显示。

编辑正如Stryner所指出的,必须在从Ajax调用的Web方法上共享该方法。 Here is an explanation on why

您的方法中的代码无法通过Ajax调用工作。如果要使用Web表单的数据绑定,请使用回发,可选择在更新面板中。如果您真的想要执行Ajax调用,那么您需要创建一个生成HTML并让JavaScript更新UI的函数。

相关问题