Text :: MicroTemplate и проверка на стороне сервера [Perl] - PullRequest
0 голосов
/ 25 сентября 2011

У меня есть форма, которую я использую Text::MicroTemplate, чтобы добавить в нее некоторые поля, такие как: Имя пользователя Фамилия E-mail

поля добавляются с помощью цикла внутри тега <form>, данные для них проверяются с помощью регулярного выражения (отправляются в качестве параметра в шаблон и «скрываются» в HTML в теге <span> с style display:none), пока все хорошо.

вдруг мне нужно добавить еще одно поле, для которого данные должны быть проверены на стороне сервера, каков наилучший подход для этого? (Конечно, я могу проверить данные POST и, если они неверны, отправить обратно форму с соответствующим сообщением об ошибке, но тогда мне придется заново отобразить всю страницу, чего я не делаю для других полей ..) .)

возможно что-то с ajax?

спасибо,

1 Ответ

1 голос
/ 28 сентября 2011

AJAX может избежать рендеринга всей страницы, что хорошо ™.

Вы точно знаете, что написание AJAX-кода, работающего с различными реализациями браузера, приведет к созданию спагетти-JavaScript-кода, поэтому я советую выравнивать различия с помощью хорошей библиотеки JavaScript. Я выбрал jQuery , потому что его легко освоить и интересно использовать, если вы уже знаете селекторы CSS2. Там есть и другие хорошие библиотеки YUI, Prototype, MooTools, просто выберите одну.

С помощью jQuery вы можете вызывать вызов AJAX различными способами, включая эту простую версию:

$.post( url, parameters, callback, returned_type );

, где

  • url : URL-адрес ресурса на стороне сервера, который проверяет ввод
  • параметры : объект, свойства которого сериализованы в закодированные параметры
  • callback : обратный вызов вызывается после завершения запроса (тело ответа и состояние передаются обратному вызову в качестве первого и второго параметра).
  • type : строка типа 'html', 'text', 'xml', 'json', которая указывает, какого ответа ожидать от сервера.

Обычно для отправки формы необходимо подключить обработчик событий к кнопке отправки: обработчик событий захватывает событие отправки, давая возможность проверить значения на стороне клиента и отправить их с помощью вызова AJAX.

$( '#my_form' ).submit( function( event ) {
    // Prevent classic submission that ends with whole page render
    event.preventDefault();
    // Here iterate through form elements and do a client-side check
    ... 
    $ajax.post( ... ); 
}

Я могу понять, что мой пример упрощен, но этот шаблон довольно распространен: hijack-submit-event-and-do-it-another-way. Другие примеры (в том числе с мощными плагинами jQuery) вы найдете в главе 11 jQuery Cookbook , озаглавленной Улучшения HTML-форм с помощью плагинов .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...