TL;DR: я вынужден использовать решение javascript для хранения параметра URL в виде файла cookie, но когда функция запускается, она сохраняет только первые 5 символов нужного мне значения.
Я работаю над внедрением отслеживания партнерских продаж в разных доменах. Как указано выше, мне нужно сохранить значение из URL-адреса в файле cookie, чтобы позже я мог извлечь его в отдельный (работающий) скрипт. На моем основном домене я смог сделать это с помощью простого скрипта .php, но сторонняя платформа, которую мы используем для наших продаж, не позволяет мне запускать скрипты .php, поэтому я нашел функцию javascript, которая казалась работает до сегодняшнего дня. Тем не менее, до сегодняшнего дня я использовал параметры теста, которые были только числовыми (1234567890 и т. д.).
Вот пример типа используемого URL и параметра:
Это функция, которую я успешно использовал до сих пор:
function getParameterByName(name) {
name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
var regex = new RegExp('[\\?&]' + name + '=([^&#]*)'),
results = regex.exec(location.search);
return results === null
? ''
: decodeURIComponent(results[1].replace(/\+/g, ' '));
}
var results = getParameterByName('irclickid');
if (results != null || results != '') {
Cookies.set('irclickid', results, { expires: 30 });
}
По какой-то причине функция теперь сохраняет только первые 5 символов значения, или в данном случае QW6Qn. Любая помощь или указание о том, как сделать эту работу правильно, приветствуется.
Решение:
Я нашел функцию, которая больше подходила для того, что мне было нужно здесь, в stackoverflow: Как получить имя параметра? и заменил первую часть моего javascript на следующий, и теперь он работает как положено!
function getParameterByName(name, url) {
if (!url) url = window.location.href;
name = name.replace(/[\[\]]/g, "\\$&");
var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, " "));
}
Последний раздел остался прежним:
var results = getParameterByName('irclickid');
if (results != null || results != '') {
Cookies.set('irclickid', results, { expires: 30 });
}
Спасибо тем, кто предложил помощь и понимание.