在后台获取数据,而不会影响UI在.net + jquery

在后台获取数据,而不会影响UI在.net + jquery

问题描述:

我需要在JQuery中创建多个搜索请求,从不同的表/页搜索,我需要将所有的搜索结果结合到一个HTML表,并显示在UI中的结果。在后台获取数据,而不会影响UI在.net + jquery

下面是我的做法..

jQuery的使用$阿贾克斯,我去到服务器(.NET代码),获取JSON数据,回来的JS文件并生成一个HTML表,并显示结果(此结果将有复选框供用户检查/取消选中结果)。一旦我显示结果,我再次使用$ .ajax,转到服务器(.NET代码)并获取数据,并将结果附加到第一个HTML表。

我的要求是,这两个请求之间,我需要

1)显示正在加载图像/文本。

2)用户应该能够访问(滚动,检查,取消选中)第一个JSON请求返回的HTML表结果。

我能够完成1)也。我面临的问题是关于2)。 一旦结果来自第一个请求,并且一旦我在div中显示结果,我再次使用$ .ajax触发第二个搜索请求。目前我无法访问HTML表格。页面冻结,直到第二个请求的结果到来,并将结果绑定到HTML表格。

我的代码是这样的。

function SearchDetails() { 
GetDetails("Test", 0); /*Trigger First Request*/ } 

function GetDetails(searchKeyword, iAppend) { 
$.ajax({ 
    type: "POST", 
    url: "FETCH_DETAILS.asmx/GetDetails", 
    data: "{'searchKeyword':'" + searchKeyword + "', 'Append':'" + iAppend + "'}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    async: false, 
    crossDomain: true, 
    jsonp: false, 
    success: function (response) { 
     if(iAppend == 0) //First Request 
     { 
      BindTable(response.d, iAppend); //Creates new HTML table and binds results 
      GetDetails("TestNew", 1);//Trigger Second Request 
     } 
     else if (iAppend == 1) { 
      BindTable(response.d, iAppend); 
     } 
    }, 
    failure: function (msg) { 
     alert(msg); 
    }, 

});} 

function BindTable(SearchResults, iAppend){ 
/*Creates HTML Table & binds to a div for First Request 
Creates HTML Table Rowss & appends to existing HTML table for Second Request*/ } 

请建议我我是否错过什么,还是有办法从jQuery的到服务器(.NET代码),而不影响(获得冻结)显示/ UI。

+0

** [此链接](https://github.com/vadimsva/waitMe)**可能会给你的想法.. – 2015-03-31 07:05:00

也许设置:

async: false 

async: true