通过JQuery从数据库到datatable再到通用集合再到JSon
善良的人们,我处于进退两难的境地,时间绝对不在我这边 我的目标 我希望通过dataset/datatable从数据库中获取记录,然后到通用集合,最后到客户端使用JQuery的JSon对象,以改善用户体验 到目前为止什么有效 我的代码在web服务中工作,直到数据移交给客户机/浏览器为止 我不确定的是什么 由于我对JSon和JQuery都没有什么经验,web服务中的数据不会显示在web浏览器中。我不知道问题出在哪里 代码 在此附上我的代码的其余部分: hotelrates.vb文件,hotelrates.asmx文件背后的代码 tblhotelrates.ID,供应商,起始日期,截止日期,房间类型,房间依据,起始日期 tblhotelrates,tblHotels,其中tblhotelrates.SupplierID=tblHotels.ID通过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
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 />');
}
}