За последние 24 часа нас посетили 19317 программистов и 1655 роботов. Сейчас ищут 1134 программиста ...

Передача структуры из PHP в JavaScript

Тема в разделе "JavaScript и AJAX", создана пользователем Dagdamor, 21 янв 2008.

  1. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Еще один вопрос по части валидации форм. Допустим, браузер делает AJAX-запрос на сервер, и в PHP-скрипте я формирую некоторую структуру, например, список ошибок валидации. Список имеет вид:

    PHP:
    1. <?php
    2.  
    3.   "field1"=>"Значение не указано.",
    4.   "field3"=>"Значение слишком длинное.",
    5.   "email"=>"E-mail адрес введен неверно.")
    т.е. ассоциативный массив. Каким образом его удобнее всего передать обратно клиенту и там превратить в массив данных JavaScript, чтобы обработать и вывести?
     
  2. armadillo

    armadillo Активный пользователь

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    чем отдаешь? если котеровым, то он объект-хеш и передает.
    если сам plain-хытымылем, то можно <script type"text/javascript"> var a = new Array( ...


    off: Последствия нового года, или к посту готовишься?
     
  3. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Нет, никаких сторонних скриптов нет. Обычный синхронный AJAX-запрос, получаю обычную строку (текст ответа).
    Отдать скриптом могу что угодно, лишь бы жабаскрипт схавал потом. <script> здесь не годится - как его выполнять-то? А вот eval()-ом можно попробовать...
     
  4. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    -Можно заранее сохранить в объект в *.js - файле, а потом передавать код ошибки
    -Можно передавать сам массив, но это не очень удобно.

    Сейчас делаю сайт на ajax"е с подобной системой:
    [js]
    otvet = new String(request.responseText);
    otvetarr = otvet.split('&&&newstr='); //Разбиваем строку на две части
    [/js]
    На основе этого можно сделать:
    [js]
    if (otvetarr[0] == "errorform") {
    alert(errors.eval(otvetarr[1]));
    }
    [/js]
     
  5. Ti

    Ti Активный пользователь

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
  6. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Ti
    Короткий пример или ссылку на оный?
     
  7. AlexGousev

    AlexGousev Активный пользователь

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    На строне сервера:
    PHP:
    1. <?php
    2.    "field1"=>"Значение не указано.",
    3.    "field3"=>"Значение слишком длинное.",
    4.    "email"=>"E-mail адрес введен неверно."));
    5. ?>
    На стороне клиента:
    [js]eval('var ret = '+request.responseText);[/js]

    PHP 5.2.0 required или сторонняя функция-аналог json_encode (на php.net в комментах есть)
     
  8. dark-demon

    dark-demon Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    1.920
    Симпатии:
    1
    Адрес:
    леноград
    Dagdamor, возьми в руки джэй-кури и не занимайся изобретением велосипедов :)
     
  9. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    dark-demon
    Мне нужен летающий велосипед ;)

    AlexGousev
    Спасибо!