客户端使用get JSON请求侦听来自服务器的传入数据

时间:2012-05-03 08:41:26

标签: javascript jquery json get

我有一个客户端获取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);

}

2 个答案:

答案 0 :(得分:1)

您应该查看Comet,这只是“实时数据提取”的一般术语。这包含

等技术
  • 民意调查(你正在做的事)
  • “抓住线”(我忘记了正确的术语),服务器在服务器中出现新内容之前不响应,从而模拟“推送”
  • 使用Flash来利用它的流媒体功能

您还应该查看WebSockets以进行双向“推送”数据传输

答案 1 :(得分: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);
            }
        }
    })
}