我有一个包含小新闻的数据库和一个显示这些新闻的网络应用程序。我想每 60 秒使用 jquery.ajax
或 jquery.getJSON
请求更新我的页面。
我的问题是我应该如何将从服务器收到的最后一个 id 传递给下一个 ajax 请求,以便我只得到更新的消息?我将其存储在哪里(在 DOM 上、全局变量或隐藏字段中……)?
最佳答案
是的,您需要传递一些参数来标识搜索新记录的位置。这通常是通过让服务器在每个 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 中。 .
关于javascript - 如何仅使用ajax/json传递获取新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3817896/