【发布时间】:2013-09-28 07:38:15
【问题描述】:
我有一个表单,在提交时会针对 AJAX 调用进行处理。
在express.js 中,为了使用其他 HTTP 动词,表单必须具有<input type="hidden" name="_method" value="put">
AJAX 调用有type: "PUT",当它被发送到服务器端时,我不断收到404、Cannot PUT。
对于PUT 请求,AJAX 或表单是否需要成功提交其他内容?
有什么建议吗?
routes/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。
【问题讨论】:
-
尾部斜线重要吗? IE。不应该是
app.put('/:library/:book/:genre', function(req, res) {吗? -
天啊!是的......这就是你不睡觉时会发生的事情!
标签: jquery ajax forms express put