在块完成之前,在块中读取ajax请求的响应

时间:2013-04-29 17:19:13

标签: javascript ajax

我的浏览器向服务器发出ajax / json请求,然后服务器调用多个服务来获取数据(花费不同的时间),然后在浏览器中显示这些数据。

我可以,等待服务器完成并返回所有数据。

理想情况下,每当每个单独的调用完成时,我都希望它返回数据(json)。这样我可以在UI中显示它们,如果其中一个服务调用需要很长时间,那么用户仍然可以查看数据,而无需查看空白屏幕。

我认为可以让ASP.NET网页或处理程序将数据发送回请求客户端而不会缓冲它。

但客户端,如何在完成之前处理ajax响应?这甚至可能吗?

我想知道多部分MIME数据类型是否也有用......?

1 个答案:

答案 0 :(得分:0)

制作一个单独的控制器/功能(取决于你正在使用的后端),然后在你的javascript中发出单独的请求。由于Javascript是异步的,因此每个函数完成后,结果都会显示在页面上。

.NET伪代码

public string Foo() {
    string returnedJson = getFoo();
    return returnedJson;
}
//Same thing for Bar and Bah

然后,在你的Javascript中(假设你正在使用jQuery)

function onFooComplete() {
    //In this function, display the data you get back from the server
}

$.get('/foo', function(res) {
    onFooComplete(res);
});

要获得更强大的植入,请在您的javascript中使用发布/订阅方法。 https://github.com/cowboy/jquery-tiny-pubsub是jquery的一个非常小但很有用的pub / sub实现。