2013-09-23 63 views
0

我有一個表單,在提交時處理AJAX調用。
express.js爲了使用其它HTTP動詞形式必須有
<input type="hidden" name="_method" value="put">如何用expressjs「put」ajax調用

AJAX調用有type: "PUT",當它被髮送到服務器端我不斷收到一個404Cannot PUT

是否還有其他的AJAX或表單需要成功提交PUT請求?
有什麼建議嗎?

路由/ index.js

app.put('/:library/:book/:genre/', function(req, res) { 
    console.log(req.params.genre); 
    res.send(200, {"youKnow":"putter"}); 
}); 

libraryBookForm.jade

form#create-library-form(action='#', method='post') 
     input(name="_method", value="PUT", type="hidden") 
     div 
     label Book 
     input#book-name(type='text', name='book-name', required='required') 
     div 
     label Gender 
     select#book-genre(name='book-genre') 
      option(value='scifi') SciFi 
      option(value='fantasy') Fantasy 
     div 
     input(type='submit', id='create-book-submit', value='Create Book') 

libraryBookAjax.js

event.preventDefault(); 
    $.ajax({ 
     url: '/publicLibrary/drawingBook/fantasy' 
     type: 'PUT', 
     contentType: 'application/json: charset=utf-8', 
     dataType: 'json', 
     data: form.serialize() 
    }).done(function(msg) { 
     alert("put success: " + msg); 
    }).fail(function(msg) { 
     console.log("failure: " + msg); 
    }); 

我也嘗試了AJAX請求中的type: "POST"。在這種情況下,POST請求將在路由中發送並執行,而不是app.put

+1

尾隨斜槓是否重要?即如果它不是'app.put('/:library /:book /:genre',function(req,res){'instead?) – mccannf

+0

OMG!是的......當你不睡覺時會發生什麼! – user1460015

回答

1

變化:

app.put('/:library/:book/:genre/', function(req, res) { 

到:

app.put('/:library/:book/:genre', function(req, res) { 

結尾的斜線導致404錯誤,因爲有沒有在你的AJAX調用的URL。