2012-10-07 73 views
3

我有一個表格編輯的對象,我想處理它發送一個PUT請求使用快車3.x中使用的是Node.js如何從HTML形式快遞和節點

編輯項正確路由:/item/edit節目用於編輯對象的表單。

我想我有三種選擇:

1)放置一個隱藏字段與「編輯」的值,這樣我就可以在快件處理得當 這是多一點的工作,因爲我必須處理它app.post('/item', routes.item.post);這也將處理新的創作和更新。

2)只提交帶有jQuery.ajax()放置調用的編輯表單。 這允許我使用app.put('/item', routes.item.put);

3)發送POST請求到/項目/編輯而不是/項目來處理更新/編輯 信息只能用於AT /項目/編輯更新:app.post('/item/edit', routes.item.edit.post);

當在app.js中查看代碼並遵循CRUD的標準約定時,解決方案#2是唯一直觀且明顯的方法。但是,如果JavaScript由於某種原因未啓用,則無法編輯其對象。

回答

8

http://www.senchalabs.org/connect/middleware-methodOverride.html

快遞:

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

HTML表單:

<form method="POST"> 
    <input type="hidden" name="_method" value="put"> 
</form> 
+0

完美,謝謝。 – chovy

+0

我相信這不再有效,請檢查API文檔:https://github.com/expressjs/method-override。你需要指定_action_作爲'/ endpoint?_method = put'我認爲。 – developius

0

對於任何人剛剛在這裏有這個問題是更新過的語法爲我工作。當你閱讀時可能會有所不同,所以如果這不起作用,請檢查method-override instructions。但使用method-override 2.3.10Express 4.13.4以下應該工作。

<form method="POST" action="/edit-post/<post.id>?_method=PUT"> 
    ..... 
    <button type="submit">Update Post</button> 
</form>