Javascript 如何在从服务器获取ajax响应的同时追加数据。?

Javascript 如何在从服务器获取ajax响应的同时追加数据。?,javascript,ajax,jquery,jquery-mobile,cordova,Javascript,Ajax,Jquery,Jquery Mobile,Cordova,任何人都可以帮助我。 我在使用phonegap应用程序的Jquery mobile中工作。 如何在从服务器获取ajax响应的同时追加数据?在这里,从服务器检索的数据超过了800 kb,为Json格式 这是我的代码: $.ajax({ url:url, data:'', contentType: "application/json; charset=utf-8", type: "POST", dataType: "json", cro

任何人都可以帮助我。 我在使用phonegap应用程序的Jquery mobile中工作。 如何在从服务器获取ajax响应的同时追加数据?在这里,从服务器检索的数据超过了800 kb,为Json格式

这是我的代码:

$.ajax({        
    url:url,
    data:'',
    contentType: "application/json; charset=utf-8",
    type: "POST",
    dataType: "json",
    crossDomain:true,
    cache: false,
    async:false,
    //success: loadAllCars,

    success:function(data){
       //alert(data)
    },
    error: OnError
}); 
我想在从服务器获取数据的同时获取数据,例如:


我有超过800 KB大小的数据,当它得到10 KB大小的800 KB数据时,我需要同时获取这些数据,以减少追加的延迟并避免用户等待,在这种情况下,JSON将无效。所以你不能这样做:(

在任何情况下,您都可以显示加载进度


无法使用JSON,因为所有数据对象都包装在
{}
[]
中。这意味着您必须等到文件末尾,直到解析器知道如何处理它(即如何构造对象)

也许您可以使用不同的编码,它“按原样”发送所有数据;取消排序非常重要,但不会有“结束”标记(例如
}
]

使用
XMLHTTPRequest.onreadystatechange()
方法,该方法会对每个接收到的readyState为
3
的数据块触发,您可以读取
XMLHTTPRequest.resonseText
。然后,如果发送对象,您必须自己创建一个智能缓冲区,如果数据只是文本,则直接使用display

我认为用
jQuery.ajax()
方法无法做到这一点,但直接方法并没有那么难


顺便说一句,您还必须确保您的服务器不时刷新数据,以防它在本地使用大量资源。例如,在进行繁重的计算时,每个结果都可以刷新到客户端,而服务器处理下一个结果。

我们可以获得ajax请求百分比吗?@Amir,您对它的理解是什么“百分比"在ajax请求的上下文中?我的意思是…当我们从服务器到客户端收到响应时,我们可以显示它正在进行中。例如,它加载了10%的完整数据,然后我们可以显示为100个正在进行中的条带中的10个。当然……如果您事先知道要发送多少字节的数据。这个数字可以是自定义格式的第一部分。T当客户端知道需要多少时。在每个
onreadystatechange()
事件上,它可以检查已经接收到多少字节,并进行计算。是的。嗯……前几个字节是指接下来将有多少字节。然后,对于每个接收到的数据块,您可以处理(显示它)并计算到目前为止您已经感知到的累计字节数。这样您就知道了百分比。只有在服务器事先知道它将发送多少字节(或者客户端对它将接收多少字节有一个预期)的情况下,这才有效但是超过800 KB的数据需要更多的时间。而且,一直显示微调器对用户来说是一种不好的体验。最佳做法是什么?不向用户显示?:)应该通知用户有关数据获取的信息