@sickgang

Как при клике на элемент менять значение в массиве $arParams?

Помогите разобраться
В шапке есть компонент который вычисляет город в котором вы находитесь, и там всплывает плашка, тот город или нет, вот:
5e7b14bc4fd69774621808.png
При клике на "Да", она пропадает, вот функция которая это делает:
window.JCReaspektGeobase.prototype.onClickReaspektSaveCity = function(reload) {
		var obClass = this;

		$('.' + obClass.params.CLASS.WRAP_QUESTION_REASAPEKT).fadeOut("700");

        $.ajax({
            url: this.params.AJAX_URL.SAVE,
            dataType: 'html',
            data: {},
            type: 'GET',
            success: function (data) {
                var dataJSON = JSON.parse(data);
                if (dataJSON.STATUS == "Y") {
                    console.log('save');
					// $('.' + obClass.params.CLASS.WRAP_QUESTION_REASAPEKT).remove();
      					if (reload == "Y") {
      						document.location.reload();
      					}
                } else {
                    console.log('Error, no save change!');
                }

            }
        });
    }


Но при перезагрузки страницы она опять появляется, потому что в вызове компонента стоит такая настройка:
<?$APPLICATION->IncludeComponent(
							 "reaspekt:reaspekt.geoip",
							 "",
							 Array(
									 "CHANGE_CITY_MANUAL" => "Y"
							 )
						);?>


Как при клике на "Да", делать так что бы эта настройка менялась на N?
  • Вопрос задан
  • 31 просмотр
Пригласить эксперта
Ответы на вопрос 1
@Firsov36
full-stack web developer
Если рассматривать именно задачу поменять параметр в компоненте, то это не "простой" вопрос. Как минимум и к Вам и от Вас куча вопросов дополнительных появится, а без видимости кода тут можно долго гадать. Тем более Вы привели код из php скрипта, а этот код как исполняется? По запросу ajax или при загрузке страницы? У загружаемой страницы есть какие-то параметры на входе? ... и т.д.

А в целом у Вас не правильный подход к решению задачу. Во-первых, уверен, что точно не из-за параметра "CHANGE_CITY_MANUAL" => "Y" у Вас снова вылезает табличка, а скорее всего из-за того, что система по какой-то причине не может сохранить выбранное или подтвержденное местоположение пользователем.

В коде у Вас есть закомменченный участок:
// $('.' + obClass.params.CLASS.WRAP_QUESTION_REASAPEKT).remove();
- почему он закомменчен? Трудно сказать, но похоже он нужен в коде. К тому же слово REASAPEKT написано с ошибкой, если брать во внимание, сравнивать с названием компоненты reaspekt:reaspekt.geoip.

Так что Вы изучите ошибки в DevTools, проверьте код php и закомментированные строки в том числе. В основном логика местоположения такая: смотрится куки местоположения. если не сохранено или вышел срок куки, то определяется местоположение. Как определили местоположение по каким-то алгоритмам, то спрашиваем пользователя - правильно ли? Пользователь выбирает что правильно или нет, указывая правильный город. Куки сохраняется для повторного использования на время сессии или просто на какое-то свое время, не только на текущую сессию.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы