Если hash и order.id существуют в url, отобразить скрытые блоки
Когда клиент жмет на кнопку рассчитать в url передается order.id и hash, должно быть так:
если order.id и hash существует в url и === "step1", мы должны показать скрытые блоки
Если что в url через history.pushState({} передаю order.id и hash и собственно step1 как стринг
success: await function (data) {
$('#overLoader').hide()
if (data.code == 200) {
$("#order_id").val(data.order_id);
$("#hash").val(data.hash);
$("#premium").html(data.premium);
$('#premiumWrapper').show();
$('#premium').text((i, text) => {
const [premium] = text.split(' ');
return `${(+premium).toLocaleString('ru-RU')}`;
});
history.pushState({}, '', "?productOrderId=" + data.order_id + "&hash=" + data.hash + "&step=1");
}else{
showError(data.error);
$('#overLoader').hide()
}
}
Блоки отображаю так по id
$("#block1").show();
$("#block2").show();
$("#block3").show();
Ответы (1 шт):
Если правильно понял вопрос то так:
Описание работы в комментариях к коду.
let search = location.search; // получаем участок ссылки, который называется seach, где передаются параметры после знака `?`
search = '?productOrderId=order_id&hash=hash&step=1'; // ВАЖНО! т.к. это код в сниппете, тут `search` будет пустым, по этому просто его подменим для демо, при использование кода это нужно будет удалить!
if(search.length > 0) { // Если `search` не пустой, то..
let searchObj = SearchToObject(search); // Переведём его в объект
// И начнём сверять
// Если есть `productOrderId` и `hash` и `step` === 1
if(searchObj['productOrderId']
&& searchObj['hash']
&& searchObj['step'] === '1') { // Если все три проверки успешны (true), то ..
document.querySelector('.hidden-block').style.display = 'block'; // Показываем скрытый блок
// ну в вашем случае
// $("#block1, #block2, #block3").show();
}
}
function SearchToObject(str) { // функция для перевода строку search в объект
var obj = {};
str = str.slice(1).split('&')
for(var i = 0; i < str.length; i++) {
var e = str[i];
e = e.split('=');
obj[e[0]] = e[1] || '';
}
return obj;
}
<div class="hidden-block" style="display:none">СКРЫТЫЙ БЛОК</div>
Это получается некое универсальное средство, которым можно выполнить проверку именно по location.search, это можно применить сразу после смены ссылки и когда пользователь обновит страницу или перейдёт по ссылке с этими параметрами.
Если же этого не нужно, а нужно выполнить проверку сразу после "рассчитать", то:
Сразу после
history.pushState({}, '', "?productOrderId=" + data.order_id + "&hash=" + data.hash + "&step=1");
Добавьте следующее:
if(data.order_id && data.hash) $('#block_1, #block_2, #block_3').show();
И всё.