簡體   English   中英

如何使用JavaScript中的split()方法從內部具有2個變量的Cookie中獲取最后一個值

[英]How to get the Last Value from Cookie with 2 variables inside Using split() methode in javascript

我有包含2個變量的cookie。 我想從變量#2(最后一個)中獲取值,但是我不知道該如何處理。

從PHP

我已經這樣設置了cookie:

 setcookie ('mysite'.$user_id,'user_id='. $user_id. '&msg_id='. $c_id, time() + $cookie_time);

我想要得到的是msg_id

在JavaScript中

var ca="mysite"+user_id;
    ca = new Array();
        ca = document.cookie.split(';');

        for (var w in ca)

        NmeVal  = new Array();
        NmeVal  = ca[w].split('=');

但是,如何僅獲得如上所述的msg_id的值?

更新

通過執行以下操作,我現在可以正常工作:

var NmeVal  = new Array();

    NmeVal  = ca[w].split('=');

    var vl =unescape(NmeVal[1]);  

    var gala = vl.split('=');

    alert(gala[2]);

我得到了我想要的唯一值::它可以在IE,FIrefox,Chrome中運行

但是,為什么它在Safari中不起作用?

更新#最后最后,我找到了解決方案jquery.cookie.js,只有3行有效,工作已完成!!!

創建-獲取-像瘋狂一樣刪除cookie,並且該插件不像其他軟件包那樣大。

因為有了這個插件,我現在開始瘋狂地使用Cookie了:)

您最好通過以下方式將信息存儲在Cookie中:

setcookie("user_id", $user_id);
setcookie("msg_id", $c_id);
// ...

通過提供名稱來獲取Cookie值的Javascript函數:

var user_id = getCookie("user_id");

function getCookie(name) {
    var result = ""; 
    var myCookie = " " + document.cookie + ";";
    var searchName = " " + name + "=";
    var startOfCookie = myCookie.indexOf(searchName); 

    var endOfCookie; 
    if (startOfCookie != -1) {
        startOfCookie += searchName.length; 
        endOfCookie = myCookie.indexOf(";", startOfCookie); 
        result = unescape(myCookie.substring(startOfCookie, endOfCookie)); 
    }
    return result; 
}

解析Cookie時,請從外部進行解析。

解析您發布的Cookie時,我發現的一件事是在“ mysite”之前增加了一個空格。 使用控制台並記錄每個步驟的結果可以幫助您發現類似的小問題。

  • 首先以“,”分隔
  • 循環並以'='分割
  • '='右邊的unescape值
  • 然后,在您的情況下,循環並用“&”分隔

該例程應該為您工作([Fiddle] [5]):

// Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim
if (!String.prototype.trim) {
    String.prototype.trim = function () {
        return this.replace(/^\s+|\s+$/g, '');
    };
}


function parseCookie(cookie) {
    var vals = cookie.split(',');
    var nameValue = {}, cur, mysite;

    for (var i = 0; i < vals.length; ++i) {
        cur = vals[i].split('=');
        nameValue[cur[0].trim()] = unescape(cur[1]);
    }

    mysite = nameValue.mysite.split('&');
    nameValue.mysite = {};
    for (i = 0; i < mysite.length; ++i) {
        cur = mysite[i].split('=');
        nameValue.mysite[cur[0].trim()] = cur[1];
    }

    return nameValue;
}

var cookie = "PHPSESSID=oleGInunYQIP7QSLpDUVR3, mysite=usr%3DChrome%26hash%3D594f803b380a41396ed63dca39503542";

console.log(JSON.stringify(parseCookie(cookie)));

結果:

{"PHPSESSID":"oleGInunYQIP7QSLpDUVR3","mysite":{"usr":"Chrome","hash":"594f803b380a41396ed63dca39503542"}}

您可以通過以下方式檢索所需的任何值:

var usr = result.mysite.usr;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM