【问题标题】:How to "PUT" an ajax call with expressjs如何使用 expressjs“PUT”一个 ajax 调用
【发布时间】:2013-09-28 07:38:15
【问题描述】:

我有一个表单,在提交时会针对 AJAX 调用进行处理。
express.js 中,为了使用其他 HTTP 动词,表单必须具有
<input type="hidden" name="_method" value="put">

AJAX 调用有type: "PUT",当它被发送到服务器端时,我不断收到404Cannot 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


【解决方案1】:

变化:

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

到:

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

尾部斜杠导致 404 错误,因为您的 AJAX 调用的 URL 中没有。

【讨论】:

    猜你喜欢
    • 2012-09-20
    • 2021-11-03
    • 1970-01-01
    • 2012-10-14
    • 1970-01-01
    • 2013-01-28
    • 1970-01-01
    • 1970-01-01
    • 2012-12-30
    相关资源
    最近更新 更多