Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Опубликовано:

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

Есть виджет, есть класс из которого берутся данные для виджета, есть 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

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

Сейчас на странице 0

  • Нет пользователей, просматривающих эту страницу.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.