Jquery 获取DropDownList以绑定来自服务器的数据

Jquery 获取DropDownList以绑定来自服务器的数据,jquery,asp.net,ajax,vb.net,Jquery,Asp.net,Ajax,Vb.net,我在用数据库中的数据填充我的ASP DropDownList时遇到了一个问题,我尝试使用ajax和jquery,遵循了一个教程,但添加了我自己的数据。我遇到的问题是,当页面加载时,下拉列表为空,代码如下 Html部分 <div id="mainitem1" class="mainItem" style="background-color: #000"> <div class="box" style="top: 20%; position: ab

我在用数据库中的数据填充我的ASP DropDownList时遇到了一个问题,我尝试使用ajax和jquery,遵循了一个教程,但添加了我自己的数据。我遇到的问题是,当页面加载时,下拉列表为空,代码如下

Html部分

<div id="mainitem1" class="mainItem" style="background-color: #000">

                <div class="box" style="top: 20%; position: absolute; width: 60%; z-index: 1; height: 70%; background-color: #e8e8e8; left: 32%; font-weight: bold; font-size: 1.3vw;">
                    <div id="divdistSearch" style="position: relative; width: 100%; height: 100%; top: 0px; left: 0px;">
                                 <table>
                                     <tr>
                                         <td></td>
                                         <td>
                                             <asp:DropDownList ID="ddlStates" runat="server"></asp:DropDownList>
                                         </td> 
                                     </tr>
                                 </table>
                    </div>
                </div>
                <img id="mainitem1-image" alt="" src="/powertap/images/Background1.jpg" style="position: absolute; top: 0px; left: 0px" />
                <img id="mainitem1-image1" alt="" src="/powertap/images/taps-and-text.png" style="position: absolute; margin-left: auto; margin-right: auto; left: 0; right: 0;" />
            </div>
        </div>

这是Jquery部分,我在separaet.js文件中有它,但我在head部分链接到了它

$(function () {
$.ajax({
    type: "POST",
    url: "Default.aspx/GetStates",
    data: '{}',
    contenType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (r) {
        var ddlStates = $("[id*=ddlStates]");
        ddlStates.empty().append('<option selected="selected" value="0">Please select</option>');
        $.each(r.d, function () {
            ddlStates.append($("<option></option>").val(this['Value']).html(this['Text']));
        });
      }
  });
});
$(函数(){
$.ajax({
类型:“POST”,
url:“Default.aspx/GetStates”,
数据:“{}”,
contenType:“application/json;charset=utf-8”,
数据类型:“json”,
成功:功能(r){
变量ddlStates=$(“[id*=ddlStates]”);
ddlStates.empty().append('请选择');
$。每个(r.d,功能(){
ddlStates.append($(“”).val(此['Value']).html(此['Text']);
});
}
});
});
这是VB中的代码部分,我想不出我遗漏了什么

Imports System.Data
Imports System.Web.Services
Imports System.Configuration
Imports System.Data.SqlClient
Public Class _Default103
   Inherits System.Web.UI.Page
               Protected Sub Page_Load(ByVal sender As Object, ByVal e As       System.EventArgs) Handles Me.Load
    If Not Session("isLoggedIn") Then
        price_file.Visible = False
        checkstock_icon.Visible = False
        checkstock_title.Visible = False
    End If
  End Sub

<WebMethod()> _
Public Shared Function GetStates() As List(Of ListItem)
    Dim query As String = "SELECT Id, State FROM States"
    Dim constr As String = ConfigurationManager.ConnectionStrings("DistData").ConnectionString
    Using con As New SqlConnection(constr)
        Using cmd As New SqlCommand(query)
            Dim states As New List(Of ListItem)()
            cmd.CommandType = CommandType.Text
            cmd.Connection = con
            con.Open()
            Using sdr As SqlDataReader = cmd.ExecuteReader()
                While sdr.Read()
                    states.Add(New ListItem() With {
                               .Value = sdr("Id").ToString(), _
                               .Text = sdr("State").ToString() _
                               })
                End While
            End Using
            con.Close()
            Return states
        End Using
    End Using
  End Function
End Class
导入系统数据
导入System.Web.Services
导入系统配置
导入System.Data.SqlClient
公共类
继承System.Web.UI.Page
受保护的子页加载(ByVal sender作为对象,ByVal e作为System.EventArgs)处理Me.Load
如果不是会话(“isLoggedIn”),则
price\u file.Visible=False
checkstock_icon.Visible=False
checkstock\u title.Visible=False
如果结束
端接头
_
公共共享函数GetStates()作为列表(属于ListItem)
Dim query As String=“选择Id,从状态中选择状态”
Dim constr As String=ConfigurationManager.ConnectionString(“DistData”).ConnectionString
使用con作为新的SqlConnection(cont)
使用cmd作为新的SqlCommand(查询)
Dim状态为新列表(列表项的)()
cmd.CommandType=CommandType.Text
cmd.Connection=con
con.Open()
将sdr用作SqlDataReader=cmd.ExecuteReader()
而sdr.Read()
states.Add(新的ListItem()与{
.Value=sdr(“Id”).ToString()_
.Text=sdr(“状态”).ToString()_
})
结束时
终端使用
con.Close()
返回状态
终端使用
终端使用
端函数
末级

在您的示例中使用JSON没有任何价值。但不管怎样,你一开始没有绑定下拉列表。初始绑定可以添加到页面加载事件中

 Protected Sub Page_Load(ByVal sender As Object, ByVal e As       System.EventArgs) Handles Me.Load
If !IsPostBack//Make sure this is only filled if the page is not posted back
 GetStates();