js 액세스 쿠키
정규 표현 식 이 일치 할 때 일치 하지만 false 인 경우:
해결:
정규 매 칭 전역 후
lastIndex
1 이 추 가 됩 니 다. 다음 매 칭 은 2 위 부터 시작 합 니 다. 테스트 에 1 명 밖 에 없 기 때문에 매 칭 실패, 매 칭 실패 후 lastIndex
0 이 됩 니 다. 다음 매 칭 은 1 위 부터 매 칭 성공... 제거 /g
하거나 수 동 으로 reg.lastIndex=0
encodeURIComponent 를 진행 하지 않 았 습 니 다.해결:
정규 표현 식
new RegExp(_name + "=([^;]*)(;|$)")
동적 으로 값 정 보 를 일치 시 켜 데이터 의 완전 성 을 확보 합 니 다.마지막 으로 반드시 ()
의 방식 으로
연산 을 해 야 한다. 그렇지 않 으 면 문제 가 생 길 수 있다.(function (root, factory) {
//
if (typeof define === "function" && define.amd) {
define([], factory);
} else if (typeof exports === "object") {
module.exports = factory();
} else {
root.pageUtils = factory();
}
})(this, function () {
var owner = {};
function isRegExp(obj) {
return Object.prototype.toString.call(obj) == "[object RegExp]";
}
function getCookieReg(_name) {
return new RegExp(_name + "=([^;]*)(;|$)");
}
/**
* Cookie
* @param {Object} _name
*/
owner.getCookie = function (_name) {
var info = document.cookie;
var cookieArr = info.split("; ");
for (var i = 0, l = cookieArr.length; i < l; i++) {
var valueArr = cookieArr[i].split("=");
if (valueArr[0] && valueArr[0] == _name) {
var cookieResults = document.cookie.match(getCookieReg(_name));
if (cookieResults.length > 1) {
try {
return JSON.parse(decodeURIComponent(cookieResults[1])).value || JSON.parse(decodeURIComponent(cookieResults[1]));
} catch (err) {
return decodeURIComponent(cookieResults[1]);
}
} else {
return '';
}
}
}
}
/**
* Cookie
* @param {Object} _name
*/
owner.getCookieObj = function () {
var obj = {};
var info = document.cookie;
var cookieArr = info.split("; ");
for (var i = 0, l = cookieArr.length; i < l; i++) {
var valueArr = cookieArr[i].split("=");
if (valueArr[0]) {
var cookieResults = document.cookie.match(getCookieReg(valueArr[0]));
if (cookieResults.length > 1) {
try {
obj[valueArr[0]] = JSON.parse(decodeURIComponent(cookieResults[1])).value || JSON.parse(decodeURIComponent(cookieResults[1]));
} catch (err) {
obj[valueArr[0]] = decodeURIComponent(cookieResults[1]);
}
} else {
obj[valueArr[0]] = '';
}
}
}
return obj;
}
/**
* Cookie
* @param {String} _key
* @param {String} _value
* @param {Numer} _expires
* @param {String} _path
* @param {Boolean} isJsonWarp json
*/
owner.setCookie = function (_key, _value, _expires, _path, isJsonWarp) {
_key = _key || "";
_value = _value || "";
isJsonWarp = isJsonWarp || false;
var result = "";
if (!_key) {
return;
}
if (typeof _expires === 'boolean') {
isJsonWarp = _expires;
} else if (typeof _path === 'boolean') {
isJsonWarp = _path;
}
if (isJsonWarp) {
var jsonObj = {
"value": _value
};
result = _key + "=" + encodeURIComponent(JSON.stringify(jsonObj)) + ";";
} else {
result = _key + "=" + encodeURIComponent(_value) + ";";
}
//
if (typeof (_expires) == "number") {
// expires
//
var d = new Date();
d.setDate(d.getDate() + _expires);
result += "expires=" + d + ";" + "path=" + _path;
} else if (typeof (_expires) == "string") {
result += "path=" + _expires;
}
document.cookie = result;
}
/**
* Cookie
* @param {Object} _name
*/
owner.removeCookie = function (_name) {
this.setCookie(_name, "", -1);
}
/**
* Cookie
* @param {Object} _name RegExp
* @param {Object} callback
*/
owner.getCookies = function (_name, callback) {
var info = document.cookie;
var cookieArr = info.split("; ");
var l = cookieArr.length;
var getInfoArr = [];
var regInfo = null;
if (l > 0) {
if (isRegExp(_name)) {
regInfo = _name;
} else {
regInfo = eval("/" + _name + "/g");
}
for (var i = 0; i < l; i++) {
var valueArr = cookieArr[i].split("=");
var key = valueArr[0];
if (regInfo.test(key)) {
regInfo.lastIndex = 0;
// lastIndex 1, , test 1 , , lastIndex 0, , .....
// /g, reg.lastIndex=0
var value = null;
var cookieResults = document.cookie.match(getCookieReg(key));
if (cookieResults.length > 1) {
try {
value = JSON.parse(decodeURIComponent(cookieResults[1])).value || JSON.parse(decodeURIComponent(cookieResults[1]));
} catch (err) {
value = decodeURIComponent(cookieResults[1]);
}
} else {
value = '';
}
getInfoArr.push([key, value]);
if (callback) {
callback(key, value);
}
}
}
}
return getInfoArr;
}
return owner;
});
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Thymeleaf 의 일반 양식 제출 과 AJAX 제출텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.