【问题标题】:How can i append data at the same time getting ajax response from server.?如何在从服务器获取 ajax 响应的同时附加数据。?
【发布时间】:2013-05-24 06:15:29
【问题描述】:

任何人都可以帮助我。 我正在使用 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 数据时,我需要同时获取它以减少附加延迟并避免用户等待

【问题讨论】:

    标签: javascript ajax jquery jquery-mobile cordova


    【解决方案1】:

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

    也许您可以使用不同的编码,“按原样”发送所有数据;顺序很重要,但不会有“结束”标记(例如}])。

    使用XMLHTTPRequest.onreadystatechange() 方法,该方法会触发每个接收到的具有3 就绪状态的数据块,您可以读取XMLHTTPRequest.resonseText。如果是发送对象,则必须自己创建一个智能缓冲区,或者如果只是文本,则直接使用显示数据。

    我不认为你可以用jQuery.ajax()方法做到这一点,但直接的方法并不难。

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

    【讨论】:

    • 我们可以得到 ajax 请求百分比吗?
    • @Amir,在 ajax 请求的上下文中,“百分比”是什么意思?
    • 我的意思是......当我们从服务器到客户端得到响应时,我们可以显示它正在进行中。例如,它加载了 10% 的完整数据,那么我们可以将 100 个进度条中的 10 个显示为进度条。
    • 当然.. 如果您提前知道要发送多少字节的数据。该数字可以是您定制格式的第一部分。然后客户知道期望多少。在每个onreadystatechange() 事件中,它可以检查已经收到了多少字节,并进行计算。
    • 是的。嗯......前几个字节是说后面会有多少字节。然后,对于每个接收到的数据块,您可以对其进行处理(显示)并计算到目前为止您已感知到的累积字节数。所以你知道百分比。这只有在服务器事先知道它将发送多少(或者客户端对它将接收多少有预期)时才有效
    【解决方案2】:

    JSON 在这种情况下无效。所以你不能这样做:(

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

    How to show loading spinner in jQuery?

    【讨论】:

    • 但是超过 800 KB 大小的数据需要更多时间。并且一直显示 Spinner 对用户来说将是一种糟糕的体验。
    • 最佳实践是什么?什么都没有向用户显示? :) 应告知用户有关数据获取的信息
    猜你喜欢
    • 2015-02-12
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 2013-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多