4

オブジェクトを編集するためのフォームがあり、node.jsでexpress3.xを使用して適切に処理したい

アイテムルートの編集:/item/editオブジェクトを編集するためのフォームを表示します。

私には3つの選択肢があると思います。

app.post('/item', routes.item.post);1)「編集」の値を持つ非表示フィールドを配置して、エクスプレスで適切に処理できるようにします。これは、新しい作成と更新も処理するために処理する必要があるため、少し手間がかかります。

2)jQuery.ajax()put呼び出しを使用して編集フォームのみを送信します。これは私が使用することを可能にしますapp.put('/item', routes.item.put);

3)/itemではなく/item / editにPOSTリクエストを送信して、更新/編集を処理します。投稿は/ item/editでの更新にのみ使用されます。app.post('/item/edit', routes.item.edit.post);

ソリューション#2は、app.jsのコードを見ると直感的で明白な唯一のソリューションであり、CRUDの標準的な規則に従います。ただし、何らかの理由でJavaScriptが有効になっていない場合、オブジェクトを編集することはできません。

4

2 に答える 2

11

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>
于 2012-10-07T02:01:58.920 に答える
4

最近この問題を抱えている人のために、ここで私のために働いた更新された構文があります。これを読んだときは違うかもしれないので、これがうまくいかない場合は、メソッドオーバーライドの手順を確認してください。ただし、以下で使用method-override 2.3.10するとExpress 4.13.4機能するはずです。

<form method="POST" action="/edit-post/<post.id>?_method=PUT">
   .....
  <button type="submit">Update Post</button>
</form>
于 2017-10-14T16:39:09.360 に答える