


Как лучше передать данные (массив переменных) их php в javascript
Вопрос заключается в следующем: КАКИМ СПОСОБОМ ЛУЧШЕ ПЕРЕДАТЬ МАССИВ ПЕРЕМЕННЫХ ИЗ PHP В JAVASCRIPT? Например, страница обрашается с помощью ajax (используются методы jquery, например, load) php скрипту на сервере. Php срипт, в свою очередь, генерирует ответ, к примеру, дерево юзеров, основанное на списках. Требуется передать id каждого юзера javascript у.
Встает вопрос: какой способ предпочтительнее:
- с помощью генерации javascript - кода. Тут встает еще один вопрос: в этом сгенерированном "дерево + javascript" javascript-код инициирует какие-либо переменные. БУДУТ ЛИ ЭТИ ПЕРЕМЕННЫЕ ДОСТУПНЫ JAVASCRIPT-КОДУ ТОЙ СТРАНИЦЫ, В КОТОРУЮ БУДУТ ВСТАВЛЕНЫ РЕЗУЛЬТАТЫ ЗАПРОСА? Это раз. И второе: в jquery есть метод ajax запроса load(url[, params[, callback]]); Вопрос: эта КОЛЛБЭК ФУНКЦИЯ ВЫПОЛНЯКТСЯ ДО ВСТАВКИ РЕЗУЛЬТАТОВ ЗАПРОСА НА СТРАНИЦУ ИЛИ ПОСЛЕ? Т. е. Будут ли ей доступны только что созданные запросом дом-элементы или же она может оперировать только с полученным от php скрипта текстом? То бишь если приводить пример: аякс запрос создает и возвращает дерево юзеров (на списках) . На созданные дом элементы навешиваются события онклик (это делается именно этой коллбэк функцией) . Сработает ли это, а если нет, то КАКИМ СПОСОБОМ МОЖНО НАВЕСИТЬ ОБРАБОТЧИКИ НА ТОЛЬКО ЧТО СОЗДАННЫЕ АЯКСОМ ЭЛЕМЕНТЫ? (с помощью метода live или delegate jquery - делегации полномоций? Или все же можно как нибудь еще? )
- просто ГЕНЕРИРОВАТЬ PHP СКРИПТОМ ВНУТРИ НУЖНОГО ЭЛЕМЕНТА СКРЫТЫЙ DIV И ВНУТРЬ НЕГО ЗАСОВЫВАТЬ ЭТО ЗНАЧЕНИЕ. Затем яваскриптом уже читать из этого дива значение. Или же лучше сохранять это значение в ид элемента? Но так как ид не может начинаться с цифр то прийдется добавлять что то типа user_54328, а затем опять извлекать оттуда эти 54328...Лишние телодвижения...) )
- или же может СОЗДАВАТЬ ВНУТРИ КАЖДОГО НУЖНОГО "AJAX"- DOM ЭЛЕМЕНТА (ВОЗВРАЩЕННОГО) INPUT И В ЕГО VALUE СУВАТЬ ЭТО ЗНАЧЕНИЕ. Одиночный инпут? Пройдет ли валидацую к примеру или не будет ли с ним геморою? Или же стоит для каждого инпута еще создать форму? Много много форм... Что то не айс. Или же создать вначале одну форму а к ней потом с помощью атрибута form приклеивать все создаваемые инпуты?
Вобщем как правильно и цивильно это делается? Очень бы хотелось услышать мнение знатоков php javascript (или даже jquery - это в идеале, т. к. по нему тоже было пару вопросов) по данному вопросу, а не популярных в последнее время кэпов очевидности с ответами типа: "Да ты чее, чувааак. Не парься по этому поводу. И вобще как нибудь обойдись безо всего этого. И все будет офигититититительно". ))) Заранее большое спасибо!)
По поводу второго комментария JSON jquery прогоняет полученные результаты через eval. Насколько это безопасно? Ведь пожно енто дело подменить и прогдать через евал-джейсон что-то небезобидное.?..
Самый культурный вариант, как по мне, JSONP.
JSON означает javascript object notation, т. е. самый простой первый вариант, что-то вроде
{{{1,2,3},{4,5,6}},size:2}
В php есть соотвествующие функции.
А JSONP - JSON with padding, т. е. с подставкой. Выглядит так: запрос
site/jsonp.php?return=retfunc
возвращает (внутри текста)
retfunc(JSON);
Т. е. если запросить его скриптом:
< script >
function retfunc(json){что-то делаем с json-ом}
< /script >
< script src="site/jsonp.php?return=retfunc" />
то все будет чики-пики, причем еще и кроссдоменное :)
Опять же, jquery это умеет, ищи.
Лень всю кучу читать. Стандарнтый способ посредством JSON
в jQuery есть стандартные средства обработки.
вот можешь почитать
http://appossum.com/appsite/techdetail/json-in-js