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

时间:2010-09-29 00:06:13

标签: javascript jquery ajax

我有一个包含小新闻的数据库和一个显示这些内容的网络应用程序。我想通过jquery.ajaxjquery.getJSON请求每60秒更新一次我的网页。

我的问题是我应该如何将从服务器收到的最后一个ID传递给下一个ajax请求,以便我只获得更新的消息?我在哪里存储它(在DOM上,在全局变量或隐藏字段中......)?

1 个答案:

答案 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