2 andy15703166 andy15703166 于 2016.02.22 09:11 提问

ajax接收返回数据几百k延迟如何处理?

大家好,
我在用js+ajax接收服务器返回数据达到几百K,通过setTimeout不断加载造成经常会pending状态,经常不能获取到数据,怎么办?
希望在这方面有经验的高人指点迷津!谢谢!
代码类似如下所示:

 function getSchedule(date) {
            var request = {
                      ...
            };
            jQuery.ajax({
                  type   : 'POST',
                data   : request,
                success: function (response) {
                            jQuery("#data").html(loadInfo(response.data));
                  }
            });

                setTimeout(function() {
                     getSchedule(date);
                }, 30000);



        },

7个回答

u012662357
u012662357   2016.02.22 11:13
已采纳

如果请求过于频繁,建议使用websocket连接后台。

andy15703166
andy15703166 我打算这样修改了....
2 年多之前 回复
bdmh
bdmh   Ds   Rxr 2016.02.22 09:14

如果你自己通过setTimeout都能搞成这样,那么先看看你的服务器的承载能力吧,然后检查本机是不是过于频繁,导致cpu或内存吃紧

andy15703166
andy15703166 我的服务器是godaddy云虚拟机,1G内存,双核cpu,国内打开的时候会出现这样问题,国外没试过。setTimeout是30秒一次,这样也会有时候数据不能及时过来。这个问题就是硬件配置问题?
2 年多之前 回复
jessicaYing0728
jessicaYing0728   2016.02.22 10:32

看样子像是查询,考虑分页试试呢

andy15703166
andy15703166 不是查询,是一次性拽取展示
2 年多之前 回复
showbo
showbo   Ds   Rxr 2016.02.22 09:18

每次请求创建一个新的xhr而不是使用同一个xhr对象

andy15703166
andy15703166 怎么修改代码?
2 年多之前 回复
baidu_32262373
baidu_32262373   2016.02.22 09:46

在ajax前面定义个数组,如var aa = []; var bb = [];

将返回回来的值放到数组里试试
success:function(data){
$.each(data,function(index,obj){
aa = obj.date;

bb = obj.time;
});

baidu_32262373
baidu_32262373 回复jackykwan4343: 我这边做的项目是画一个K线图,一次性也从接口获取很多数值,就是用这种方法做的。
2 年多之前 回复
andy15703166
andy15703166 这样的话,setTimeout每次数组都是重置,岂不是没有意义?
2 年多之前 回复
rui888
rui888   Ds   Rxr 2016.02.22 09:46

非得一次加载那么多吗?

sinat_28023829
sinat_28023829   2016.02.23 17:56

把setTimeout写在success里面,可以结合分页。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
ajax接收遍历处理json格式数据
ajax在前后端的交互中应用非常广泛,通过请求后台接口接收处理json格式数据展现在前端页面。 下面我们来简单用 ajax在本地做一个接收并处理json的小例子 首先我们要新建一个叫做data的json文件data.json。 data.json文件内容是: [     {"name":"小明","sex":"男","address":"北京","job":"web前端工程师"} ]
ajax处理从servlet获取的json array
ajax处理从servlet获取的json array 首先不要忘记导入json.jar 和 jquery.jar  前端代码: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here <% request.
ajax请求后台并接收返回数据
ajax请求后台并接收返回数据
ajax的异步提交以及返回数据的处理,重点json
在工作中,因为种种原因我需要用到了ajax,本身是一个java工程师,但是做java的并不是一辈子写后台,特别是如今的b/s架构,所以通过自身学习了ajax,废话不多扯,看下面。 1.首先我们需要一个完整XMLHttprequest var req; if(window.ActiveXObject){ req = new ActiveXobject("Microsoft.XMLHT
ajax请求数据,并处理返回的数据
import requests from urllib.parse import urlencode from requests.exceptions import RequestException import json import time import re import pymongo import os from hashlib import md5 hostName = 'loc...
后台返回前台list,前台ajax接收后遍历的方法
后台代码如下:/** * 方法描述:检查案件信息是否符合立案标准 * */ @RequestMapping(value = "/checkLiAnList.action") @ResponseBody public String checkLiAnList(HttpServletRequest request,HttpServletResponse response)
【实例】ajax提交到java后台之后处理数据
环境:eclipse+struts 要实现的效果:点击按钮提交数据到后台之后回到前台显示出来数据 index.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here window.onload = f
jquery ajax处理后端传回数据
文档加载准备好之前传回数据,一般采用json来处理。 $.ajax({ type: "POST",//以什么方式请求 url: 'FolderAction!saveInformSetting.action',//请求地址 data: key:value,//请求带过去的数据 如果是数组{works:["work1","work2"]} dataType: "json",/返
$.ajax()方法从服务器获取json数据几种方式详解
对$.ajax()方法从服务器获取json数据的几种方式进行详解
ajax如何处理服务器返回的3种数据格式
这篇东西本身是非常基础的,但是经常在处理ajax返回值的时候还是会犯各种小错误,所以就想到把这些方法结合以前写过的代码片段整理一下,方便以后复习和使用。另外呢,虽然能搜到很多类似的文档,但是整理一份自己的还是坠吼的= ̄ω ̄= ajax方法的参数 常用的ajax参数比如url,data,type,包括预期返回类型dataType,发送到服务器的数据的编码类型contentTy