动态添加新值到cookie

Add new value to cookie dynamically

本文关键字:cookie 新值 添加 动态      更新时间:2023-09-26

我试图添加新的值到一个cookie,这取决于你在一个下拉菜单中选择了哪个选项。当您选择一个选项时,该选项的值应该被插入到cookie中。当您选择其他选项时,应将该选项的新值添加到cookie中,并替换旧值。

我试过了:

    var value;
    var id;
    var service_info;
    var service;    
    var connection; //Namnet på de tjänster som finns, nao_lan, stadsnat, tele osv English: The values of the options
    $.cookie("cookie_connection", connection);  //Creates cookie
$('.type_of_connection').change(function(e) { //Visa vald tjänst och dess tillhörande div. Varje tjänst har en egen div.
    var show_connection = 1;    
    connection = $(this).val(); //Innehåller VILKEN tjänst man har valt ENGLIS: The option you choosed
    $.cookie("cookie_connection", connection);
    var divbox = null;  //Innehåller id:et på den div som skall visas.
    if(connection == "nao_lan") {
        divbox = "services_naolan";
    } else if(connection == "stadsnat") {
        divbox = "services_stadsnat";
    } else if(connection == "vadsl") {
        divbox = "services_vadsl";
    } else if(connection == "tele") {
        divbox = "services_tele";
    } else {
        divbox = null;
    }
    $.ajax({
            type: 'GET',
            url: 'summary.php',
            data: {connection: connection, show_connection: show_connection},
            dataType: "html",
            success: function(data) { $("#table_right #" + divbox).html(data).show(); },
            error: function(xhr, ajaxOptions, thrownError) { alert(thrownError); }
    }); 
});

$('#'+$.cookie('cookie_connection')+' :input').blur(function(e) {
    alert($.cookie('cookie_connection'));
    if(!$(e.currentTarget).val() == "") {
        service_info = $(e.currentTarget).val(); //Innehåller värdet i input-fälten
        id = $(e.currentTarget).attr('id');
        service = $.cookie('cookie_connection');
        $.ajax({
            type: 'GET',
            url: 'summary.php',
            data: {service_info: service_info, id: id, service: service},
            dataType: "html",
            success: function(data) { $('#table_right #services_'+$.cookie('cookie_connection')).html(data); },
            error: function(xhr, ajaxOptions, thrownError) { alert(thrownError); }  
        });     
    }
});

正如你所看到的,我试图在第一个函数中向cookie添加一个新值。我将在下面的函数中使用这个cookie值来生成属于该cookie值的div。有人能帮我吗?

我认为你必须在change事件中绑定blur事件,否则它永远不会工作-也就是说,你必须取消绑定旧的blur事件,并创建一个新的,因为你的连接发生了变化。我想下面的代码可能会有帮助:

function bindConnection( prevConnId, currConnId ) {
    if( prevConnId ) {
        $('#'+prevConnId+' :input').off( "blur ");
    }
    $('#'+currConnId+' :input').on( "blur", function(e) {
        alert( currConnId );
        if(!$(e.currentTarget).val() == "") {
            service_info = $(e.currentTarget).val(); //Innehåller värdet i input-fälten
            id = $(e.currentTarget).attr('id');
            service = currConnId;
            $.ajax({
                type: 'GET',
                url: 'summary.php',
                data: {service_info: service_info, id: id, service: service},
                dataType: "html",
                success: function(data) { $('#table_right #services_'+currConnId).html(data); },
                error: function(xhr, ajaxOptions, thrownError) { alert(thrownError); }  
            });     
        }
    });
}
$('.type_of_connection').change(function(e) { //Visa vald tjänst och dess tillhörande div. Varje tjänst har en egen div.
    var show_connection = 1;    
    connection = $(this).val(); //Innehåller VILKEN tjänst man har valt ENGLIS: The option you choosed
    bindConnection( $.cookie("cookie_connection"), connection ); //unbind event for previous connection, and bind new one
    $.cookie("cookie_connection", connection);
    var divbox = null;  //Innehåller id:et på den div som skall visas.
    if(connection == "nao_lan") {
        divbox = "services_naolan";
    } else if(connection == "stadsnat") {
        divbox = "services_stadsnat";
    } else if(connection == "vadsl") {
        divbox = "services_vadsl";
    } else if(connection == "tele") {
        divbox = "services_tele";
    } else {
        divbox = null;
    }
    $.ajax({
            type: 'GET',
            url: 'summary.php',
            data: {connection: connection, show_connection: show_connection},
            dataType: "html",
            success: function(data) { $("#table_right #" + divbox).html(data).show(); },
            error: function(xhr, ajaxOptions, thrownError) { alert(thrownError); }
    }); 
});
bindConnection( null,  $.cookie('cookie_connection') ); //bind the first connection

我一直使用这两个函数来设置和获取cookie:

function setCookie(c_name,value,exdays,c_domain) {
    var exdate=new Date();
    exdate.setDate(exdate.getDate() + exdays);
    var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
    document.cookie=c_name + "=" + c_value + "; path=/; domain=."+c_domain;
} 
function getCookie(c_name) {
    var c_value = document.cookie;
    var c_start = c_value.indexOf(" " + c_name + "=");
    if (c_start == -1) {
      c_start = c_value.indexOf(c_name + "=");
    }
    if (c_start == -1) {
      c_value = "";
    } else {
      c_start = c_value.indexOf("=", c_start) + 1;
      var c_end = c_value.indexOf(";", c_start);
      if (c_end == -1) {
        c_end = c_value.length;
      }
      c_value = unescape(c_value.substring(c_start,c_end));
    }
    return c_value;
}

的例子:

setCookie("coolcookie","SOME VALUE",7,"stackoverflow.com");
var mycookie = getCookie("coolcookie");