通过JQuery从数据库到datatable再到通用集合再到JSon

通过JQuery从数据库到datatable再到通用集合再到JSon,jquery,asp.net,json,service,web,Jquery,Asp.net,Json,Service,Web,善良的人们,我处于进退两难的境地,时间绝对不在我这边 我的目标 我希望通过dataset/datatable从数据库中获取记录,然后到通用集合,最后到客户端使用JQuery的JSon对象,以改善用户体验 到目前为止什么有效 我的代码在web服务中工作,直到数据移交给客户机/浏览器为止 我不确定的是什么 由于我对JSon和JQuery都没有什么经验,web服务中的数据不会显示在web浏览器中。我不知道问题出在哪里 代码 在此附上我的代码的其余部分: hotelrates.vb文件,hotelrat

善良的人们,我处于进退两难的境地,时间绝对不在我这边

我的目标 我希望通过dataset/datatable从数据库中获取记录,然后到通用集合,最后到客户端使用JQuery的JSon对象,以改善用户体验

到目前为止什么有效 我的代码在web服务中工作,直到数据移交给客户机/浏览器为止

我不确定的是什么 由于我对JSon和JQuery都没有什么经验,web服务中的数据不会显示在web浏览器中。我不知道问题出在哪里

代码 在此附上我的代码的其余部分:

hotelrates.vb文件,hotelrates.asmx文件背后的代码 tblhotelrates.ID,供应商,起始日期,截止日期,房间类型,房间依据,起始日期 tblhotelrates,tblHotels,其中tblhotelrates.SupplierID=tblHotels.ID

     Dim clsDB As New clsDatabase("jksafarisdbConnectionString")
     Dim dsCostingDetails As DataSet
     Try
        dsCostingDetails = clsDB.QueryDataSet(SQL, "jksafarisdbConnectionString")

        Dim s As Rate
        Dim c As New Generic.List(Of Rate)
        For Each dr As DataRow In dsCostingDetails.Tables(0).Rows
            s = New Rate
            With s
                .myID = m_globalfunctions.CheckDBNull(dr("ID"))
                .Supplier = m_globalfunctions.CheckDBNull(dr("Supplier"))
            End With
            c.Add(s)
        Next

        Return c
    Catch ex As Exception
        MsgBox(ex.Message)
    Finally
        clsDB.Close()
    End Try

End Function End Class <Serializable()> _ Public Class Rate
Private _myID As String
Private _supplier As String

Public Property myID() As String
    Get
        Return _myID
    End Get
    Set(ByVal value As String)
        _myID = value
    End Set
End Property

Public Property Supplier() As String
    Get
        Return _supplier
    End Get
    Set(ByVal value As String)
        _supplier = value
    End Set
End Property End Class
代码JQuery/Json的客户端

<div id="output"></div>
<script type="text/javascript">
$(function () {

 $('#Button1').click(getRates);

 });



function getRates() {

$.ajax({

    type: "POST",

    url: "Hotelrates.asmx/GetRates",

    data: "{}",

    contentType: "application/json; charset=utf-8",

    dataType: "json",

    success: function (response) {

        var rates = response.d;

        $('#output').empty();

        $.each(rates, function () {

            $('#output').append('<p><strong>' + Rate.myID + ' ' +

                        Rate.myID + '</strong><br /> Year: ' +

                        Rate.mySupplier + '<br />');

        });

    },

    failure: function (msg) {

        $('#output').text(msg);

    }
});
     }

  </script>
  </asp:Content>

js中的Rate变量似乎没有声明

尝试使用以下命令更改成功回调函数:

success: function (response) {
    var rates = response.d;
    $('#output').empty();

    for (var r in rates) {
        $('#output').append('<p><strong>' + rates[r].myID + ' ' +
                    rates[r].myID + '</strong><br /> Year: ' +
                    rates[r].mySupplier + '<br />');

    }
}

这是一个好的开始,但我认为OP的代码中还有其他问题。例如,他为什么使用response.d?似乎没有任何迹象表明正在设置d变量@Lindelani,您可以使用的一个技巧是在Chrome或Firefox中使用脚本调试器,并在成功处理程序中设置断点。在那里,您可以检查从服务器返回的对象并轻松查看如何对其进行迭代。使用response.d是因为它是standard.asmx web服务使用的默认包装器,我看不出有任何问题。感谢大家的建议,我非常感谢。tanathos提供的功能运行良好。谢谢。请将答案标记为解决方案,如果它解决了您的问题。您是否调试了js并检查了它的下落?
success: function (response) {
    var rates = response.d;
    $('#output').empty();

    for (var r in rates) {
        $('#output').append('<p><strong>' + rates[r].myID + ' ' +
                    rates[r].myID + '</strong><br /> Year: ' +
                    rates[r].mySupplier + '<br />');

    }
}