Ответ AJAX (jQuery) - PullRequest
       3

Ответ AJAX (jQuery)

0 голосов
/ 31 октября 2010

Предположим, что все формы в вашем приложении имеют такую ​​структуру:

<div id="result_messages"></div>
<form action="/action">
<!-- all the form -->
</form>

Кнопка отправки для этой формы выглядит следующим образом:

<input type="button" onclick="$.post( '/action', $(form).serialize(), function (data) {
   $('#result_messages').html( data );      // At this point the 'data' is an standard HTML with a message
});" />

НО, но не всегда ответ являетсясообщение ... как определить, когда данные являются сообщением или нет ??????:

<input type="button" onclick="$.post( '/action', $(form).serialize(), function (data) {
   if (isMessage( data ))
       $('#result_messages').html( data );      
   else
        doActionWith( data );
});" />

Использование JSON может быть решением:

{ response_type : 'message', data: 'all_data_here' }

{ response_type : 'nomessage', data: 'all_data_here' }

Другое решение состоит в том, чтобы поставитьспециальная строка в начале данных:

<!--message--><ul><li>form was processed</li></ul>

У вас есть другие идеи?что вы думаете об этих решениях?

Ответы [ 2 ]

2 голосов
/ 31 октября 2010

что вы думаете об этих решениях?

<input type="button" onclick="$.post( "/action", $(form).serialize(), function (data) {

  1. Это упадет.Кавычка перед /action приведет к завершению значения атрибута onclick
  2. Встроенный JS неприятен.Свяжите ваши обработчики событий из внешних скриптов.
  3. Если JS недоступен, это не сработает.Напишите форму, которая работает (с обычной кнопкой отправки), а затем постепенно улучшайте с помощью JS.
  4. form не определено, то есть this.form
  5. /action повторяется.Напишите больше многократно используемого кода: this.form.action

Использование JSON может быть решением

Да.Для структурирования страницы используйте структурированный формат данных вместо двоичного кода.

0 голосов
/ 31 октября 2010

Какие есть варианты, кроме простого вывода html?json?

Если это так, вы можете отправить объект обратно и проверить его в обратном вызове.

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