ajax

SimpleMVC: Трудности с Ajax на главной странице

Заметка относится к урокам по SimpleMVC:

Во время переноса функциональности MyFirstCMS на движок SimpleMVC возникла проблема - ajax-ссылки, которые корректно отрабатывали в MyFirstCMS перестали это делать:)

Помогла модификация кода следующим образом:

- Было:

 ....$('a.ajaxArticleBodyByGet').one('click', function(){
        var contentId = $(this).attr('data-contentId');....

- Стало:

Проблемы с передачей данных ajax-запросом в simpleMVC

Во время выполнения задания по переносу myfirstcms на движок simpleMVC возникла проблема с ajax-запросом, который должен открывать полное содержание выбранной статьи на главной странице без ее перезагрузки. Файл со скриптом - https://github.com/Voronve/FromCMStoMVC/....
Информация, которая при этом передается в консоль:

#6 Практическое задание №6 -- Загрузка данных с помощью ajax

Задание доступно на видео: https://youtu.be/dAN1OT0ARYw

Подсказки & примеры

[!] Select2 по-русски. Справочник и примеры работы со знаменитым JQuery-плагином

Скачиваем и подключаем на странице

Предположим, что вы скачали плагин [1]
далее его скрипт и стили можно подлючить на странице после Jquery как-то так:

The 'Access-Control-Allow-Origin' header contains multiple values '..., *', but only one is allowed. Ошибка Решение

The 'Access-Control-Allow-Origin' header contains multiple values 'http://localhost:4200, *', but only one is allowed. Origin 'http://localhost:4200' is therefore not allowed acces

-- здесь сказано, что ошибка наблюдается по той причине что выставлена небезопасная опция * (т.е. помимо адреса http://localhost:4200 админ разрешил запросы вообще отовсюду, что небезопасно -- почему и происходит ошибка).

php json_encode() Объект не конвертируется в json - получаю пустой объект, но работает если конвертировать в массив

Почему при отправке объекта в формате json, получаю пустой объект?
Если явно сменить тип переменной на array, данные передаются корректно:

foreach ($allMessages as $message) {
           $loadingMessages[] = (array) $message;
}
return new JsonResponse([
    'loadingMessages' => $loadingMessages,
]);

Решение

Проблема в том, что private свойства объекта не упаковываются в json.

jquery javascript show и hide() Не работают в хроме (Chrome) -- Как исправить

Если в моззиле всё ок, то тогда скорее всего в хроме у вас проблема с тем, что синхронный ajax запрос блокирует обработку событий -- не давай им "всплывать" выше.

Так, например, такой вот код работать не будет:

Ajax-запрос -- бесконечно выполняющийся, дольше чем время выполнения скрипта на сервере (мистика)

По-идее такого быть не может, что что-то похожее наблюдалось с присутствием цикла while и выполнения запроса к mongodb.

При этом сама монга в диспетчере линукса (top) показывала, что занимает 300 процентов CPU, другие запросы к ней тоже выполнялись медленно до тех пор, пока процесс монги не был перезагружен.

jquery ajax подгрузка данных каждые несколько секунд

Если Вам требуется обновлять данные на странице каждые несколько секунд, например, для подгрузки новостной ленты, автоматической смены слайдов или отображения изменяющейся информации без обновления страницы, воспользуйтесь методом

setInterval(function(){}, 5000); // где 5000 - интервал обновления страницы -- 5 секунд

Я использую автообновление для подсчёта числа статей, отмеченных пользователем(лайки):

Pages

Subscribe to RSS - ajax