asp.net – 加速自动完成的Web服务并避免过多的方法调用
发布时间:2020-12-16 03:41:06 所属栏目:asp.Net 来源:网络整理
导读:所以我的 jquery自动完成’工作’,但它有点烦躁,因为每次keydown()触发时我都调用webservice方法,所以我得到很多方法挂起,有时让“auto”工作我必须键入它和退格有点因为我假设它的返回值有点慢.我已将查询结果限制为8以最小化时间.有什么我可以做的让这个更
所以我的
jquery自动完成’工作’,但它有点烦躁,因为每次keydown()触发时我都调用webservice方法,所以我得到很多方法挂起,有时让“auto”工作我必须键入它和退格有点因为我假设它的返回值有点慢.我已将查询结果限制为8以最小化时间.有什么我可以做的让这个更快一点吗?如果我没有让它更具响应性,这件事似乎几乎没用.
JavaScript的 $("#clientAutoNames").keydown(function () { $.ajax({ type: "POST",url: "WebService.asmx/LoadData",data: "{'input':" + JSON.stringify($("#clientAutoNames").val()) + "}",contentType: "application/json; charset=utf-8",dataType: "json",success: function (data) { if (data.d != null) { var serviceScript = data.d; } $("#autoNames").html(serviceScript); $('#clientAutoNames').autocomplete({ minLength: 2,source: autoNames,delay: 100,focus: function (event,ui) { $('#project').val(ui.item.label); return false; },select: function (event,ui) { $('#clientAutoNames').val(ui.item.label); $('#projectid').val(ui.item.value); $('#project-description').html(ui.item.desc); pkey = $('#project-id').val; return false; } }) .data("autocomplete")._renderItem = function (ul,item) { return $("<li></li>") .data("item.autocomplete",item) .append("<a>" + item.label + "<br>" + item.desc + "</a>") .appendTo(ul); } } }); }); WebService.asmx <WebMethod()> _ Public Function LoadData(ByVal input As String) As String Dim result As String = "<script>var autoNames = [" Dim sqlOut As Data.SqlClient.SqlDataReader Dim connstring As String = *Datasource* Dim strSql As String = "SELECT TOP 2 * FROM v_Clients WHERE (SearchName Like '" + input + "%') ORDER BY SearchName" Dim cnn As Data.SqlClient.SqlConnection = New Data.SqlClient.SqlConnection(connstring) Dim cmd As Data.SqlClient.SqlCommand = New Data.SqlClient.SqlCommand(strSql,cnn) cnn.Open() sqlOut = cmd.ExecuteReader() Dim c As Integer = 0 While sqlOut.Read() result = result + "{" result = result + "value: '" + sqlOut("ContactID").ToString() + "'," result = result + "label: '" + sqlOut("SearchName").ToString() + "'," 'result = result + "desc: '" + title + " from " + company + "'," result = result + "}," End While result = result + "];</script>" sqlOut.Close() cnn.Close() Return result End Function 我敢肯定,我只是在解决这个问题,或者没有更好地平衡通话或其他事情. 非常感激! 解决方法
首先,你必须调整你的查询.你没有使用参数化查询,所以你只是在乞求
SQL injection攻击.
再一次,你必须先修复它! 完成后,使用“延迟”值.我假设在将查询发送到服务器之前,它在键盘之间等待的时间是多少?您希望它等待您的用户暂停键入,然后发送请求,以避免使用无关的调用使服务器超载. 你也应该使用try..catch..finally并在完成后处理你的连接. 顺便说一句,如果您的查询执行效果不佳,请尝试在该列上添加索引.如果你没有索引,’赞’语句很糟糕…… (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 将自动Web测试集成到构建过程中
- MVC3中的IValidatableObject – 客户端验证
- asp.net – signalR – 如何从客户端调用服务器方法 – 代码
- asp.net – .Net Core 2.0 – 获取AAD访问令牌以与Microsof
- asp.net-mvc – 将ASP.NET MVC路由迁移到ASP.NET vNext
- asp.net-mvc-3 – 在html标签中添加html输入
- asp.net-mvc-3 – aspnetdb.mdf来自我的ASP.NET MVC应用程序
- 在ASP.NET MVC中公开资源字符串到JavaScript文件的最佳方式
- 个人ASP.NET开源
- asp.net-mvc – 在Controller或其他地方渲染部分字符串
推荐文章
站长推荐
- asp.net-mvc – 使Kendo Datepicker只读,但也可以
- asp.net-core-mvc – 如何在启动时初始化应用程序
- ASP.NET MVC在IIS6上
- asp.net – ExecuteScalar抛出NullReferenceExce
- ASP.NET -- WebForm -- 页面生命周期
- 如何在asp.net中从c#运行javascript
- ASP.NET -- WebForm -- Session的使用
- 在ASP.NET动态数据中隐藏列
- 事件(Event),绝大多数内存泄漏(Memory Leak)的
- asp.net-mvc – mvc 4 beginform with route nam
热点阅读