[英]How to prevent Javascript Class variable (this) inside Methode overtakes values from variables defined inside Method
[英]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”之前增加了一個空格。 使用控制台並記錄每個步驟的結果可以幫助您發現類似的小問題。
該例程應該為您工作([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.