首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用ajax获取大量数据

使用ajax获取大量数据
EN

Stack Overflow用户
提问于 2017-05-03 18:39:38
回答 4查看 4.7K关注 0票数 1

我有以下ajax代码,用于从服务器获取用户详细信息。我从服务器端生成html table,并将结构作为字符串返回。这很好用,但是当用户记录太多时,我会得到undefined。可以在ajax中传递的数据的限制是什么?有没有其他方法可以用来在客户端生成html表?

代码语言:javascript
复制
 var param = {};
    param.CompanyID = $('[id*=txtCoID]').val();
    $.ajax({
        type: 'POST',
        url: 'AjaxAsync.aspx/BindActiveUsers',
        beforeSend: function () { },
        data: '{P: ' + JSON.stringify(param) + '}',
        contentType: 'application/json; charset=utf-8',
        //processData: false,
        //timeout: 1000000,
        //async: true,
        //cache: false,
        dataType: 'json',
        success: function (rsp) {
            document.getElementById('dvUsers').innerHTML = rsp.d;
        },
        error: function (error) {
            document.getElementById('dvUsers').innerHTML = error.d;
        }
    });    
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-05-05 03:04:38

问题是由请求超时引起的,而不是数据的大小。因为我在aspx项目中使用ajax updatepanel,所以我在ToolkitScriptManager标签中添加了AsyncPostBackTimeOut='300000000',并添加了

代码语言:javascript
复制
<system.web.extensions>
 <scripting>
  <webServices>
    <jsonSerialization maxJsonLength="300000000" />
  </webServices>
 </scripting>
</system.web.extensions>

添加到此处记录的Web.config文件here现在,我可以毫无问题地加载数据,尽管根据返回的记录数量,这需要一些时间。谢谢你的帮助。

票数 2
EN

Stack Overflow用户

发布于 2017-05-03 18:59:47

HTTP没有设置最大数据大小。你面临的限制是由你的web服务器强加的,所以你需要增加上限。

另一种解决方案是部分构建HTML表,并创建一个按钮,按下该按钮将加载其余部分(或者使用EventListener捕获页面滚动位置并在用户滚动时保持加载)。如果这种方法满足您的需求,您就不应该面临任何类型的数据限制。

票数 1
EN

Stack Overflow用户

发布于 2017-05-03 19:11:13

根据this questionthis question的说法,在AJAX请求中传输的数据量没有限制。浏览器或您的服务器可能会施加限制。您是否在多个浏览器上测试过您的应用程序?哪种类型的服务器?您能否尝试查找请求失败的大致数据量?

This question透露,应该有允许大规模传输的配置值。一个答案是将数据转换为JSON字符串,您已经这样做了。

关于生成表的另一种方法,我最初的想法是将请求分解为多个请求(可能基于用户记录的数量)。如果你不能解决这个问题,也许你可以使用这个方法。@Arnau Fernández的建议是在用户滚动时以小块的形式加载数据,这一建议类似且聪明。如果你不想要滚动和加载行为,你可以一次发送所有的请求,这仍然可以提供用较小的请求消除大量请求的安全性。

我在你的网址里看到了.aspx。如果您使用的是asp.net,可以尝试使用solution here,它可以调整web.config文件中的一个值。如果这没有帮助,那么关于您的技术的更多信息将是有帮助的。

粘贴其配置以供参考:

代码语言:javascript
复制
<configuration>
    <system.web.extensions>
        <scripting>  
             <webServices>                                                   
                 <jsonSerialization maxJsonLength="1000000" />                 
             </webServices>
        </scripting>
    </system.web.extensions>
</configuration>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43757707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档