我有一个包含小新闻的数据库和一个显示这些内容的网络应用程序。我想通过jquery.ajax
或jquery.getJSON
请求每60秒更新一次我的网页。
我的问题是我应该如何将从服务器收到的最后一个ID传递给下一个ajax请求,以便我只获得更新的消息?我在哪里存储它(在DOM上,在全局变量或隐藏字段中......)?
答案 0 :(得分:1)
是的,您需要传递一些参数来标识从哪里搜索新记录的点。这通常通过让服务器返回每个Ajax响应的顺序id或时间戳来处理,这样后续请求会将其作为参数附加。
您可以通过各种方式存储此值,但由于这些通常是未重新加载的单页应用程序,因此简单的JavaScript变量通常就足够了。您也可以使用closures,如以下示例所示,而不是使用全局变量:
function fetchData(last_update_id) {
$.ajax({
url: 'fetch_data.php?last_update=' + last_update_id,
method: 'GET',
dataType: 'json',
success: function(data) {
// Get the last_update_id from the server response.
last_update_id = data.last_update_id;
// Process your Ajax response...
// Relaunch after 60s with the last_update_id argument.
setTimeout(function () {
fetchData(last_update_id);
}, 60000);
}
});
}
如果你采用这种方法,你最初会用0
或-1
参数或其他任何东西来调用这个函数,只要服务器能够理解它是第一个请求。然后该函数将自动管理自己,并将last_updated_id
括在closure。