javascript - 如何仅使用ajax/json传递获取新记录

标签 javascript jquery ajax

我有一个包含小新闻的数据库和一个显示这些新闻的网络应用程序。我想每 60 秒使用 jquery.ajaxjquery.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/

相关文章:

javascript - 通过 AJAX 获取 PHP 数组

使用 HttpsUrlConnection 的 Java POST 连接超时

javascript - Alexa 内置插槽类型 : No value being passed

javascript - 需要帮助在 javascript 的 match 函数中使用正则表达式

javascript - jquery 从上到下滑动

javascript - 使用 jquery .css() 添加自定义样式名称

Javascript如何设置我自己的img宽度和高度(调整大小)

javascript - 在reactjs中没有父子关系的不同组件之间进行通信

javascript - 我怎样才能合并我的 JavaScript 文件并仍然让我的回调等待就绪状态?

javascript - Ajax 未捕获类型错误 : Illegal invocation