Jquery 让ASP.NEt函数与Ajax配合使用以填充下拉列表

Jquery 让ASP.NEt函数与Ajax配合使用以填充下拉列表,jquery,asp.net,ajax,vb.net,webmethod,Jquery,Asp.net,Ajax,Vb.net,Webmethod,我正在尝试使用一个共享函数和一个带有WebMethod的Ajax来填充asp.net下拉列表。我已经在页面中测试了该功能,同时UpdatePanel中的下拉菜单使用单击按钮进行了操作 Public Function Update() Dim objDB As New DB Dim drProducts As SqlClient.SqlDataReader objDB.Conn.Open() drProducts = objDB.cmdGetProducts.E

我正在尝试使用一个共享函数和一个带有WebMethod的Ajax来填充asp.net下拉列表。我已经在页面中测试了该功能,同时UpdatePanel中的下拉菜单使用单击按钮进行了操作

Public Function Update()

    Dim objDB As New DB

    Dim drProducts As SqlClient.SqlDataReader
    objDB.Conn.Open()
    drProducts = objDB.cmdGetProducts.ExecuteReader(CommandBehavior.CloseConnection)
    Do While drProducts.Read
        DDLProducts.Items.Add(New ListItem(drProducts.Item("Title"), drProducts.Item("ProductID")))
    Loop
    drProducts.Close()
    objDB.Conn.Close()

End Function


Protected Sub btnUpdate_Click(ByVal sender As Object, ByVal e As EventArgs)
        Update()
End Sub
当我尝试使用Ajax时,如果是共享函数,我会在Web方法中得到“不能引用实例成员”,如果是公共函数,它就不起作用

<WebMethod()> _
Public Shared Function UpdateList()

    Try
        Update()
        Return "Success"

    Catch ex As Exception
        Return "failure"
    End Try

End Function
_
公共共享函数UpdateList()
尝试
更新()
返回“成功”
特例
返回“失败”
结束尝试
端函数
下面是一个jQuery脚本在对话框关闭时激发

    <script>
        $(function () {

            $("#MyDialog").dialog({
                autoOpen: false,
                height: 600,
                width: 300,
                modal: true,
                buttons: {
                    "Save": function () {
                        $.ajax({
                            type: 'POST',
                            contentType: "application/json; charset=utf-8",
                            url: '/AddProduct.aspx/UpdateList',
                            async: false,
                            success: function (response) {
                                alert("Record saved successfully in database");
                            },
                            error: function () {
                                alert("some problem in saving data");
                            }
                        });
                        $(this).dialog("close");
                    },
                    "Cancel": function () {
                        $(this).dialog("close");
                    }
                },
                close: function () {

                }
            });

            $("#name").click(function () { $("#MyDialog").dialog("open"); });
        });
    </script>

$(函数(){
$(“#MyDialog”).dialog({
自动打开:错误,
身高:600,
宽度:300,
莫代尔:是的,
按钮:{
“保存”:函数(){
$.ajax({
键入:“POST”,
contentType:“应用程序/json;字符集=utf-8”,
url:“/AddProduct.aspx/UpdateList”,
async:false,
成功:功能(响应){
警报(“记录成功保存在数据库中”);
},
错误:函数(){
警报(“保存数据时出现问题”);
}
});
$(此).dialog(“关闭”);
},
“取消”:函数(){
$(此).dialog(“关闭”);
}
},
关闭:函数(){
}
});
$(“#名称”)。单击(函数(){$(“#MyDialog”)。对话框(“打开”);});
});
我如何用Ajax填充列表元素,以及是否可以在WebMethod中引用控件(我认为这是不可能的),以及是否有解决方法

更新
我已经尝试过,但无法让它与我的代码一起工作,也不知道问题出在哪里

直接对该函数进行ajax调用
url:'/AddProduct.aspx/Update'

Public Function Update() As String

   Dim objDB As New DB

   Dim drProducts As SqlClient.SqlDataReader
   Try
      objDB.Conn.Open()
      drProducts = objDB.cmdGetProducts.ExecuteReader(CommandBehavior.CloseConnection)
      Do While drProducts.Read
          DDLProducts.Items.Add(New ListItem(drProducts.Item("Title"), drProducts.Item("ProductID")))
      Loop
      drProducts.Close()
      objDB.Conn.Close()
      Return "Success"

   Catch ex As Exception
       Return "failure"
   End Try
 End Function
AJAX

                   $.ajax({
                        type: 'POST',
                        url: '/AddProduct.aspx/Update',
                        async: false,
                        success: function (response) {
                            alert("Record saved successfully in database");
                        },
                        error: function () {
                            alert("some problem in saving data");
                        }
                    });
用于更新按钮

 Protected Sub btnUpdate_Click(ByVal sender As Object, ByVal e As EventArgs)
    Dim result As String = Update()
    If(result = "failure") Then
     'Show some kind of error
    End If
 End Sub

将公共共享函数UpdateList()更新为字符串。由于要返回某些内容,因此必须添加返回参数Hello and Thank Ani,使用Update作为公共函数Update()时,方法中不能包含Update()。。作为共享函数,我必须引用DDL产品作为新的DropDownList,它不能同时使用Ajax或UpdatePanel按钮。我只希望它能够使用Ajax,并且该按钮仅用于测试。您可以将更新设置为受保护,并将更新列表公开。此外,如果您正在进行
函数更新()
作为函数,我想您已经返回了一些东西。再次感谢您的努力。。我在评论和回答更新中尝试了你的3条建议。。所有这些都可以很好地使用按钮,而不是Ajax。我甚至再次复制了Ajax代码,但警告了错误状态。