Ajax
Доброго времени. Такая проблема, точнее вопрос:
Есть экшен, на котором есть какие-то данные (текст, JS). Надо получить данные из этого экшена и вывести.
Делаю так:
Оно работает, но хотелось бы сделать в стилистике LS, т.е. вида ls.ajax. Оно работает только с POST? Как сделать GET? Или как сейчас нормальное решение? Поясните пожалуйста неразумному.
Есть экшен, на котором есть какие-то данные (текст, JS). Надо получить данные из этого экшена и вывести.
Делаю так:
var ls = ls || {}; ls.name = (function ($) { this.namename = function() { $.get(aRouter['name'], function( data ) { $( ".result" ).html( data ); }); } return this; }).call(ls.name || {},jQuery); jQuery(document).ready(function($){ /** * init */ ls.name.namename(); });
Оно работает, но хотелось бы сделать в стилистике LS, т.е. вида ls.ajax. Оно работает только с POST? Как сделать GET? Или как сейчас нормальное решение? Поясните пожалуйста неразумному.
11 комментариев
Просто используйте в Ивенте Экшина конструкцию вида:
В Ивенте, соответственно, можете использовать данные GET, POST, как и в обычных, неаджаксовых ивентах.
На клиенте принимаете данные, парсите и выводите. Добавьте обработчик ошибок и вывод всплывающих нотификейшинов, как это сделано в ls.ajax при желании.
Дополняете базовый ajax возможностью обработки сообщений об ошибках и нотификейшинов.
И далее можете использовать в таком виде:
т.е. нет никаких данных, которые меняет пользователь, статика по сути. А ajax-ом буду переодично подгружать экшен, если условие выполнено, показывать скрипт. М.б. лучше использовать стандартный $.get?
1. Вы делаете ajax запрос на сервер, передавая данные в get или post.
2. Ваш экшин получает эти данные, вы что-то с ними делаете, и формируете ответ клиенту (браузеру).
3. Ответ клиенту в LS имеет стандартный вид (вне зависимости, каким способом вы сделали запрос), это json-объект:
4. Разберем поля, и найдем откуда они берутся:
bStateError — признак несистемной ошибки. Т.е., вы просто хотите сказать пользователю, что его запрос ошибочен, но ошибка не критична (т.е., это не системная ошибка сервера, запрос обрабатывается корректно). Можно показать пользователю pop-up с сообщением об ошибке, или использовать в других целях, например, перебросить пользователя на другую страничку.
Что бы сформировать признак ошибки достаточно в Ивенте добавить «формирователь» ошибки, например:
Этот формирователь ошибок сформирует корректный json ответ клиенту.
В поле sMsgTitle будет текст ошибки, а в поле bStateError — признак ошибки. Поле data будет пустым.
sMsg — поле тела сообщения об ошибке, формируется вторым параметром метода Message_AddErrorSingle. При желании.
data — поле с вашими json-данными для правильного, «безошибочного» ответа клиенту. Формируется методом Viewer_AssignAjax, например:
Первый параметр метода отвечает за название поля, в котором будет находится json-ответ с данными, второй параметр — значение передаваемой переменной, объекта массива или чего-то, подлежащего преобразованию в json-объект.
Т.е., в data вы помещаете то, с чем хотите работать на клиенте.
5. Обработка данных на сервере.
К примеру, ваш Ивент имеет следующий вид:
6. Обработка данных на клиенте
Формируем «наш ajax».
$.ajax
можно использоватьls.ajax
, который ключ безопасности передаст сам. также нет обязательного поляdata
в ответе на аякс запрос.:)