网站ajax之前慢,Ajax请求太慢

我有一个页面需要单击表中的数字,然后从数据库中相应地读取另一个表。我曾经使用ASP gridview生成第二个表。然后我试图使用jquery ajax。当我需要请求20,000条记录时,jquery ajax速度非常慢(加载大约需要6秒),而asp gridview要快得多。Ajax请求太慢

ASPX.VB

_

_

Public Shared Function GetOrderDetail(ByVal id As String) As String

Dim orderNum As Integer = Integer.Parse(id)

Dim sbTable As New StringBuilder

Dim sql As New StringBuilder

sql.Append("SELECT oh.[ORDERNO], od.[STYLE], s.[STYLEDESC],od.[COLOR], c.[COLORDESC], od.[SIZE],")

sql.Append(" SUM(CONVERT(DECIMAL(12,0),od.[TOTALQTY])) AS 'Item_Total', och.[TRACKINGNO]")

sql.Append(" FROM [OrderHeader] AS oh INNER JOIN [test1] AS ocd")

sql.Append(" ON oh.[ORDERNO] = ocd.[ORDERNO] INNER JOIN [test2] AS och")

sql.Append(" ON ocd.[FKEY] = och.[PKEY] INNER JOIN [test3] AS od")

sql.Append(" ON oh.[ORDERNO] = od.[ORDERNO] INNER JOIN [test4] as s")

sql.Append(" ON s.[STYLE] = od.[STYLE] INNER JOIN [test5] AS c")

sql.Append(" ON c.[COLOR] = od.[COLOR]")

sql.Append(" WHERE od.[ORDERNO] =")

sql.Append(orderNum)

sql.Append(" GROUP BY oh.[ORDERNO], od.[STYLE], s.[STYLEDESC],od.[COLOR], c.[COLORDESC], od.[SIZE], och.[TRACKINGNO]")

sql.Append("select [ORDERNO] from [oabcd].[dbo].[OrderHeader] where [ORDERNO] =")

sql.Append(orderNum)

Dim connMain As Data.SqlClient.SqlConnection

Dim cmdMain As Data.SqlClient.SqlCommand

Dim rdrMain As Data.SqlClient.SqlDataReader

connMain = New Data.SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings("SsssConnectionString").ConnectionString)

connMain.Open()

cmdMain = New Data.SqlClient.SqlCommand(sql.ToString(), connMain)

rdrMain = cmdMain.ExecuteReader()

Dim bAlt As Boolean = True

If rdrMain.HasRows Then

sbTable.Append("

sbTable.Append("")

sbTable.Append("

")

sbTable.Append("

")

sbTable.Append("Order Number")

sbTable.Append("

")

sbTable.Append("

")

sbTable.Append("Item")

sbTable.Append("

")

sbTable.Append("

")

sbTable.Append("Color")

sbTable.Append("

")

sbTable.Append("

")

sbTable.Append("Size")

sbTable.Append("

")

sbTable.Append("

")

sbTable.Append("Item Total")

sbTable.Append("

")

sbTable.Append("

")

sbTable.Append("Tracking Number")

sbTable.Append("

")

sbTable.Append("

")

sbTable.Append("

")

sbTable.Append("

")

While rdrMain.Read()

sbTable.Append("

")

sbTable.Append("

")

sbTable.Append(rdrMain.Item("ORDERNO"))

sbTable.Append("

")

sbTable.Append("

")

sbTable.Append(rdrMain.Item("STYLEDESC"))

sbTable.Append("

")

sbTable.Append("

")

sbTable.Append(rdrMain.Item("COLORDESC"))

sbTable.Append("

")

sbTable.Append("

")

sbTable.Append(rdrMain.Item("Size"))

sbTable.Append("

")

sbTable.Append("

")

sbTable.Append(rdrMain.Item("Item_Total"))

sbTable.Append("

")

sbTable.Append("

")

sbTable.Append(rdrMain.Item("TRACKINGNO"))

sbTable.Append("

")

sbTable.Append("

")

End While

sbTable.Append("

")

sbTable.Append("

")

End If

rdrMain.Close()

cmdMain.Dispose()

connMain.Close()

connMain.Dispose()

Return sbTable.ToString()

End Function

JS

$('.orderNumber').on('click', function() {

var orderNum = $(this).text();

console.log(orderNum);

$.ajax({

type: "POST",

url: "Order.aspx/GetOrderDetail",

data: "{'id' :'" + orderNum + "'}",

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

dataType: "json",

success: function (result) {

$('#orderDetail').html(result.d);

$('.orderDetailTable').dataTable({

});

},

error: function (xhr, status, error) {

// Display a generic error for now.

alert("Ajax Read Detail Error!");

}

});

});

我回(含20,000条记录)一个非常大的字符串。我的问题是:是否有任何方法来改进代码,如返回其他类型?或者不返回任何东西只是从asp GetOrderDetail()函数生成HTML?任何可以使请求更快的东西?谢谢。

2013-08-23

Quentin

+1

与任何优化问题一样,在修复问题之前,您需要知道什么是缓慢的。您可以使用像Chrome的开发人员工具“网络”标签这样的工具来获取有关时间到了哪里的更多详细信息。它将打破查找/连接,等待第一个字节和接收数据之间的时间。这会给你一个线索,以确定需要解决的问题。 –

+0

也许不会立即返回20K记录并实现分页? –

+0

它看起来不像你正在返回json数据。看起来你正在返回表格数据,这将会更大,并且需要更长的时间才能完成。 –

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值