Еще один вопрос по части валидации форм. Допустим, браузер делает AJAX-запрос на сервер, и в PHP-скрипте я формирую некоторую структуру, например, список ошибок валидации. Список имеет вид: PHP: <?php array( "field1"=>"Значение не указано.", "field3"=>"Значение слишком длинное.", "email"=>"E-mail адрес введен неверно.") т.е. ассоциативный массив. Каким образом его удобнее всего передать обратно клиенту и там превратить в массив данных JavaScript, чтобы обработать и вывести?
чем отдаешь? если котеровым, то он объект-хеш и передает. если сам plain-хытымылем, то можно <script type"text/javascript"> var a = new Array( ... off: Последствия нового года, или к посту готовишься?
Нет, никаких сторонних скриптов нет. Обычный синхронный AJAX-запрос, получаю обычную строку (текст ответа). Отдать скриптом могу что угодно, лишь бы жабаскрипт схавал потом. <script> здесь не годится - как его выполнять-то? А вот eval()-ом можно попробовать...
-Можно заранее сохранить в объект в *.js - файле, а потом передавать код ошибки -Можно передавать сам массив, но это не очень удобно. Сейчас делаю сайт на ajax"е с подобной системой: [js] otvet = new String(request.responseText); otvetarr = otvet.split('&&&newstr='); //Разбиваем строку на две части [/js] На основе этого можно сделать: [js] if (otvetarr[0] == "errorform") { alert(errors.eval(otvetarr[1])); } [/js]
На строне сервера: PHP: <?php json_encode(array( "field1"=>"Значение не указано.", "field3"=>"Значение слишком длинное.", "email"=>"E-mail адрес введен неверно.")); ?> На стороне клиента: [js]eval('var ret = '+request.responseText);[/js] PHP 5.2.0 required или сторонняя функция-аналог json_encode (на php.net в комментах есть)