如何使用jQuery临时存储数据

如何使用jQuery临时存储数据,jquery,ajax,storage,Jquery,Ajax,Storage,我有一个问题,因为我不是很熟练的js,我将感谢任何建议 基本上,我在文章页面上每x秒执行一次ajax调用,该调用连接到数据库并检查注释号 现在,在每次通话后,我需要检查最后一次通话返回的号码是否比上一次通话的号码大(以检查号码评论是否增加) 我很难弄清楚如何正确存储与下一个呼叫比较后将被删除的单个呼叫的数据,当然,这些数据会被新数据覆盖 现在,我可以使用并知道如何使用两种方法:cookies和在不可见元素内部的dom中存储数据,但这是最佳解决方案吗?您不需要使用cookies或dom来存储这些数

我有一个问题,因为我不是很熟练的js,我将感谢任何建议

基本上,我在文章页面上每x秒执行一次ajax调用,该调用连接到数据库并检查注释号

现在,在每次通话后,我需要检查最后一次通话返回的号码是否比上一次通话的号码大(以检查号码评论是否增加)

我很难弄清楚如何正确存储与下一个呼叫比较后将被删除的单个呼叫的数据,当然,这些数据会被新数据覆盖


现在,我可以使用并知道如何使用两种方法:cookies和在不可见元素内部的dom中存储数据,但这是最佳解决方案吗?

您不需要使用cookies或dom来存储这些数据。只需使用闭包*

var old = null;

$.get(url, function(d){
   if(old == null){
     old = d;
   }
   if(old.something > d.something){
      //do something else
   }
});

闭包是这项工作的原因,如果javascript没有闭包,您将无法修改
$.get
函数中的外部
old
var

您不需要使用cookies或dom来存储此数据。只需使用闭包*

var old = null;

$.get(url, function(d){
   if(old == null){
     old = d;
   }
   if(old.something > d.something){
      //do something else
   }
});

闭包是这项工作的原因,如果javascript没有闭包,您将无法修改
$.get
函数中的外部
old
var

您提到的两种方法是正确的-我通常将数据存储在DOM中的一个不可见元素中

您可能还需要研究三个问题:

1) 现代浏览器现在有HTML5本地存储,这在功能上相当于cookie,只是它存储在浏览器存储中。这在IE9中不存在,并且在现代浏览器中仍在开发中,因此除非您知道用户的浏览器具有此功能,否则不要使用此功能(IE9尚不支持此功能)

2) 如果您使用的是jQuery,则有jQuery data:,它允许您将数据附加到特定元素。这个链接比我在这里解释得更好


3) 根据javascript的设置方式,您可以简单地将以前的注释数存储在javascript中的一个变量中吗?然后,当AJAX调用返回时,可以将结果变量与前一个计数变量进行比较。如果可能的话,我会选择这种解决方案。

您提到的两种方法是正确的-我通常会将数据存储在DOM中的一个不可见元素中

您可能还需要研究三个问题:

1) 现代浏览器现在有HTML5本地存储,这在功能上相当于cookie,只是它存储在浏览器存储中。这在IE9中不存在,并且在现代浏览器中仍在开发中,因此除非您知道用户的浏览器具有此功能,否则不要使用此功能(IE9尚不支持此功能)

2) 如果您使用的是jQuery,则有jQuery data:,它允许您将数据附加到特定元素。这个链接比我在这里解释得更好


3) 根据javascript的设置方式,您可以简单地将以前的注释数存储在javascript中的一个变量中吗?然后,当AJAX调用返回时,可以将结果变量与前一个计数变量进行比较。如果可能的话,我会选择此解决方案。

使用一个超出注释获取/呈现功能范围的变量:

var CommentsModule = (function(){
    var me = {},
        numComments = null;

    function renderComments(comments){
        //render logic here
        for(i=numComments || 0; i<comments.length;i++){ //the || 0 handles the initial load when the numComments === null
            //append new comments
        }
        //reset your 'cached' variable to the current # of comments
        numComments = comments.length;
    }

    me.getComments = function() {
        //do $.get or $.ajax
        $.ajax("myURL",
            success: function(msg) { 
                if(msg.length > numComments) {
                    renderComments(msg);
                }
            }
        });
    }

    return me;
}());

使用超出注释获取/呈现函数范围的变量:

var CommentsModule = (function(){
    var me = {},
        numComments = null;

    function renderComments(comments){
        //render logic here
        for(i=numComments || 0; i<comments.length;i++){ //the || 0 handles the initial load when the numComments === null
            //append new comments
        }
        //reset your 'cached' variable to the current # of comments
        numComments = comments.length;
    }

    me.getComments = function() {
        //do $.get or $.ajax
        $.ajax("myURL",
            success: function(msg) { 
                if(msg.length > numComments) {
                    renderComments(msg);
                }
            }
        });
    }

    return me;
}());
本地存储:

localStorage.setItem('lastUpdate','2013-02-04');

var lastUpdate = localStorage.getItem('lastUpdate');
或者使用评论的数据属性,例如:

$('#comments').data('lastUpdate', '2013-02-04');
本地存储:

localStorage.setItem('lastUpdate','2013-02-04');

var lastUpdate = localStorage.getItem('lastUpdate');
或者使用评论的数据属性,例如:

$('#comments').data('lastUpdate', '2013-02-04');

您可以使用此代码。它需要JQuery作为cookie插件。这不是临时储存

    function GetData(key)
    {
        var sonuc = "";
        if (typeof (localStorage)!="undefined")
        {
            //İkinci html5 localStorage desteği varmı ona bakılır
            if (localStorage[key] != null)
            {
                sonuc= localStorage[key];
            }
        }
        else
        {
            //son olarak cookie desteği varmı ona bakılır
            sonuc=$.cookie(key);
        }
        return sonuc;
    }

    function SetData(key,value)
    {
        if (typeof (localStorage) != "undefined")
        {
            //ikinci önce html5 localStorage desteği varmı ona bakılır
            try
            {
                localStorage.setItem(key, value);
                return true;
            } catch (e)
            {
                return false;
            }

        }
        else
        {
            //son olarak cookie desteği varmı ona bakılır
            try
            {
                $.cookie(key, value);
                return true;
            } catch (e)
            {
                return false;
            }
        }
    }

    /*this plugin is to add cookie function to jquery*/
    /*Copyright (c) 2006 Klaus Hartl (stilbuero.de)*/
    jQuery.cookie = function (name, value, options) {
        if (typeof value != 'undefined') { // name and value given, set cookie
            options = options || {};
            if (value === null) {
                value = '';
                options.expires = -1;
            }
            var expires = '';
            if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
                var date;
                if (typeof options.expires == 'number') {
                    date = new Date();
                    date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
                } else {
                    date = options.expires;
                }
                expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
            }
            var path = options.path ? '; path=' + (options.path) : '';
            var domain = options.domain ? '; domain=' + (options.domain) : '';
            var secure = options.secure ? '; secure' : '';
            document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
        } else { // only name given, get cookie
            var cookieValue = null;
            if (document.cookie && document.cookie != '') {
                var cookies = document.cookie.split(';');
                for (var i = 0; i < cookies.length; i++) {
                    var cookie = jQuery.trim(cookies[i]);
                    // Does this cookie string begin with the name we want?
                    if (cookie.substring(0, name.length + 1) == (name + '=')) {
                        cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                        break;
                    }
                }
            }
            return cookieValue;
        }
    };
    /*end of jquery plugin*/
函数GetData(键)
{
var sonuc=“”;
if(typeof(localStorage)!=“未定义”)
{
//kinci html5本地存储desteği varmıona bakılır
if(localStorage[key]!=null)
{
sonuc=本地存储[键];
}
}
其他的
{
//儿子奥拉拉克·库奇·德斯特奥伊·瓦姆·奥纳·巴克勒尔(olarak cookie desteği varmıona bakılır)
sonuc=$.cookie(键);
}
返回sonuc;
}
函数设置数据(键、值)
{
if(typeof(localStorage)!=“未定义”)
{
//Ikincince html5本地存储desteği varmıona bakılır
尝试
{
setItem(键、值);
返回true;
}捕获(e)
{
返回false;
}
}
其他的
{
//儿子奥拉拉克·库奇·德斯特奥伊·瓦姆·奥纳·巴克勒尔(olarak cookie desteği varmıona bakılır)
尝试
{
$.cookie(键、值);
返回true;
}捕获(e)
{
返回false;
}
}
}
/*此插件用于向jquery添加cookie函数*/
/*版权所有(c)2006克劳斯·哈特尔(stilbuero.de)*/
jQuery.cookie=函数(名称、值、选项){
如果(typeof value!=“undefined”){//给定名称和值,则设置cookie
选项=选项| |{};
如果(值===null){
值=“”;
options.expires=-1;
}
var失效=“”;
if(options.expires&(typeof options.expires=='number'| | options.expires.toutString)){
风险值日期;
if(typeof options.expires==“number”){
日期=新日期();
date.setTime(date.getTime()+(options.expires*24*60*60*1000));
}否则{
日期=options.expires;
}
expires=';expires='+date.toutString();//使用expires属性,IE不支持最大年龄
}
var path=options.path?;path='+(options.path):'';
var domain=options.domain?';domain='+(options.domain):'';
var secure=options.secure?';secure':'';
document.cookie=[name',=',encodeURIComponent(value),expires,path,domain,secure].join(“”);
}e