Rud*_*udi 1 javascript jquery pagination
在javascript函数中,我调用服务器并获取10批记录.我需要这样做,直到我有所有记录.
为了开始,我做了一个while循环,在ajax调用的错误回调中,我将结束while循环.
中途我开始意识到这不起作用,因为ajax调用是异步的,因此我会在循环中激发大量请求.我确信有一个标准模式可以做到这一点,但我不知道如何.
如果调用没有返回错误,我怎样才能在循环中执行ajax调用并执行它?我正在构建的伪代码:
var stillRecordsAvailable = true;
while (stillRecordsAvailable) {
// get the next batch of records
$.ajax({
url: '/getrecords.json',
data: {data_set_id: dataset.id},
type: 'GET',
success: function(data, textStatus, xhr) {
// do something
},
error: function(xhr, textStatus, errorThrown) {
// nothing left to do
stillRecordsAvailable = false;
}
});
Run Code Online (Sandbox Code Playgroud)
谢谢你指点我正确的方向
小智 5
您可能希望将ajax调用包装在ajax成功回调中调用的函数中:
function getRecords(data, textStatus, xhr) {
if (data) {}; // do something...
$.ajax({
url: '/getrecords.json',
data: {data_set_id: dataset.id},
type: 'GET',
success: getRecords
});
}
Run Code Online (Sandbox Code Playgroud)
这仅在您的服务器/ API在不存在更多记录时返回错误时才有效; 然而,这可能不是最好的模式.跟踪异步事件状态的更优雅方式是通过延迟/承诺模式.jQuery有一个很好的实现:http://api.jquery.com/category/deferred-object/
| 归档时间: |
|
| 查看次数: |
1306 次 |
| 最近记录: |