0

我有一个客户端获取从服务器获取某些数据的 JSON 请求,只要有东西进入服务器(服务器有 10 秒的时间间隔侦听传入数据),客户端就会获取数据。

现在的问题是客户端得到的所有数据都在一个队列中,每个时间间隔后都一个接一个出来,所以每个时间间隔只显示一个数据。

我希望来自服务器的每个数据都应该独立于时间间隔显示。任何帮助表示赞赏!

function getRequest(i) {
        $.getJSON(
                '/nextdocument',
                function(data) {

                    console.log(data.documentID + data.description +
                                data.price + data.instanceId + data.errorMessage);
                }
        );
        setTimeout(function() {
            getRequest(i);
        }, 11000);

}
4

2 回答 2

1

您应该查看Comet,它只是“实时数据获取”的总称。这包含技术,如

  • 轮询(你正在做的)
  • “守住线”(我忘记了正确的术语),服务器直到有新东西到达服务器才响应,从而模拟“推送”
  • 使用 Flash 来利用它的流媒体功能

您还应该查看用于双向“推送”数据传输的WebSockets

于 2012-05-03T08:46:22.937 回答
0

OP写道:

感谢您的建议,我已经通过以下代码解决了它:

function getRequest() {
    $.ajax({
        url: '/nextdocument',
        type: 'GET',
        async: true,
        cache: false,
        timeout: 11000, 
        success: function(data) {
            console.log(data.documentID + data.description +
                        data.price + data.instanceId);
            setTimeout(
                    'getRequest()',
                    1000
            );

            data["ok"] = data.ok;
            data["errorMessage"] = data.errorMessage;
            $.ajax(
                    {
                        url: "/customerdone",
                        data: JSON.stringify(data),
                        processData: false,
                        type: 'POST',
                        contentType: 'application/json'
                    }
            )
            //no document if no read in
            if (data.ok == "false") {
                console.log(data.errorMessage);
            }
        }
    })
}
于 2015-11-17T21:22:50.643 回答