2012-03-16 2 views
4

В моем первом проекте Node используются Express/Express-resource библиотеки и Jade для шаблонов.Что такое предпочтительный способ отправки формы с помощью экспресс?

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

PUT  /forums/:forum  -> update 

Тем не менее, я не вижу простого способа представления значений.

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

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

ответ

6

От Express guide:

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

Итак:

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

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

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

Update: Как я понимаю новые комментарии от спрашивающего, 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(); 
}); 
+0

Не созданы ли эти помеченные сопоставления для обработки в ajax? – nrph

+0

Извините? Я не понимаю вопроса. –

+0

В соответствии с этим комментарием http://stackoverflow.com/a/7257509/450441 большинство современных браузеров поддерживают PUT с XMLHttpRequest. Поэтому он дает представление о том, что, возможно, ajax должен быть наиболее очевидным вариантом для представления значений с помощью выражения. – nrph