Перейти к содержимому
Русский язык для Invision Community 5

Помогите с логикой

Здравствуйте.

Есть виджет, есть класс из которого берутся данные для виджета, есть JS с аякс запросом в контроллер, мне нужно соединить всё это между собой.

1. Настройки виджета передаются в класс с выборкой данных, в зависимости от этих настроек выбирается тот или иной where. Я через JS обращаюсь в контроллер, который сейчас голый, я не могу из него вызвать класс и получить данные, так как у меня нет виджетовских настроек. Как с таким работать?

Вот настройки виджета предаются в класс: https://prnt.sc/r4cmhd

Как мне вызвать функцию класса из контроллера, если у меня нет настроек виджета? https://prnt.sc/r4cmt1

Я понимаю, что в классе можно указать стандартные значения, но у настроек виджета они могут отличатся, суть задачи - обновить виджет через JS при запросе.

Рекомендованные сообщения

Передавайте настройки виджета через js.

Например, в html сформировали ссылку к методу контроллера + конфиги виджета. В js получили ее и передали.

  • Автор
34 минуты назад, newbie сказал:

Передавайте настройки виджета через js.

Например, в html сформировали ссылку к методу контроллера + конфиги виджета. В js получили ее и передали.

Еще вопрос есть по JS. Как из .done() получить результат переменной? Что-то не получается никак. Т.е как сделать:

.done({

var = result;

});

echo var;

 

 

Что за echo в js?

  • Автор
Только что, newbie сказал:

Что за echo в js?

Я образно, извините.

			ips.getAjax()( '?app=wc3&module=games&controller=ajax&do=geoLocation&show=json&noencode=1', {
				dataType: 'json',
				data: {
					ip: data.ip
				}
			} )
			.done( function (response) {
				countryIso = response.country.iso.toLowerCase();
				Debug.log(response);
			});

// тут countryIso

 

  • Автор
1 час назад, newbie сказал:

сформировали ссылку к методу контроллера + конфиги виджета

Сделал так: https://prnt.sc/r4g64w спасибо за подсказку.

Почему в done() не делаете?

  • Автор
1 час назад, newbie сказал:

Почему в done() не делаете?

Это не правильно. Запрос возвращает только информацию об ип адресе, пихать туда весь код не хочется. Может метод отдельный сделать для получения инфы по ип?

 

Хотя всё равно не передает: https://prnt.sc/r4zei1

Изменено пользователем TemKa_SD

1 час назад, TemKa_SD сказал:

Хотя всё равно не передает: https://prnt.sc/r4zei1

А должен? Вы хотя бы документацию посмотрите

  • Автор
1 час назад, newbie сказал:

А должен? Вы хотя бы документацию посмотрите

Я не понимаю, можете объяснить?

Вот код:

var test;

ips.getAjax()( ips.getSetting('baseURL') + 'index.php?app=wc3&module=games&controller=ajax&do=geoLocation', {
  data: {
    ip: data.ip
  }
} )
  .done( function (response) {
  test = response;
});

Debug.log("Ответ: " + test);

Вот ответ:

Цитата

Ответ: undefined

 

Изменено пользователем TemKa_SD

В вашем варианте нужно использовать 

'async': false

 

  • Автор
21 час назад, newbie сказал:

В вашем варианте нужно использовать 


'async': false

 

Подскажите пожалуйста "как правильно" с этим работать. Через timeout? Я кстати пробовал весь код засунуть в done() всё равно не работало, причем вообще всё сломалось.

24.02.2020 в 09:29, TemKa_SD сказал:

Подскажите пожалуйста "как правильно" с этим работать. Через timeout?

При чем  тут таймаут? Я же дал ссылку. Добавили новый параметр со значением. И все.

  • Автор
22 часа назад, newbie сказал:

При чем  тут таймаут? Я же дал ссылку. Добавили новый параметр со значением. И все.

Спасибо, работает. На сколько это правильная реализация? Смущает отключение ассинхронного запроса.

Цитата

XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check

 

Изменено пользователем TemKa_SD

Создайте аккаунт или войдите в него для комментирования

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.