Какой предпочтительный способ отправить форму с экспресс? - PullRequest
4 голосов
/ 16 марта 2012

В моем первом проекте Node Express / Express-resource библиотеки используются и Jade для шаблонов.

В соответствии с документами создаются сопоставления по умолчанию. Среди них мы можем найти:

PUT     /forums/:forum       ->  update

Пока я не вижу простого способа передать значения.

Как отправить создание / обновление?

Нефритовая форма может быть легко создана и парсер тела, но как отправить эту форму? Обратите внимание, что express-resource определяет PUT метод (не POST).

1 Ответ

6 голосов
/ 16 марта 2012

Из Экспресс-гид :

При использовании таких методов, как PUT с формой, мы можем использовать скрытый ввод с именем _method, который можно использовать для изменения метода HTTP. Для этого нам сначала понадобится промежуточное программное обеспечение methodOverride, которое должно быть расположено ниже bodyParser, чтобы оно могло использовать свой req.body, содержащий значения формы.

Итак:

app.use(express.bodyParser());
app.use(express.methodOverride());

И в вашей форме:

<input type="hidden" name="_method" value="put">

Обновление: Насколько я понимаю, новые комментарии от автора спрашивают, nrph хочет способ отправки формы методом PUT, используя ajax. Вот решение с использованием jQuery:

// Use this submit handler for all forms in document
$(document).on('submit', 'form', function(e) {
  // Form being submitted
  var form = e.currentTarget;
  // Issue an ajax request
  $.ajax({
    url: form.action,          // the forms 'action' attribute
    type: 'PUT',               // use 'PUT' (not supported in all browsers)
                               // Alt. the 'method' attribute (form.method)
    data: $(form).serialize(), // Serialize the form's fields and values
    success: function() {},
    error: function() {}
  });
  // Prevent the browser from submitting the form
  e.preventDefault();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...