将$ ajax转换为PUT请求的fetch()

时间:2017-08-18 04:15:30

标签: javascript node.js ajax express fetch-api

我尝试将以下jquery代码翻译为使用fetch API。它发出PUT请求:

function save () {
  $.ajax('/{{user.username}}', {
    method: 'PUT',
    data: {
      street: $('#street').val(),
      city: $('#city').val(),
      state: $('#state').val(),
      zip: $('#zip').val()
    },
    complete: function () {
      cancel()
      location.reload()
    }
  })
}

这是获取API请求:

fetch('/{{user.username}}', {
  method: 'PUT',
  headers: {
    'Content-Type': 'application.json'
  },
  body: JSON.stringify({
     street: document.getElementById("street").value,
     city: document.getElementById("city").value,
     state: document.getElementById("state").value,
     zip: document.getElementById("zip").value
  })
}).then(() => {
  cancel()
  location.reload()
})
}

当我console.log到节点终端时,我得到一个空数组。

我正在尝试使用以下内容在Express中处理它:

app.put('/:username', function (req, res) {
  console.log(req.body)
  console.log("hello")
  var username = req.params.username
  var user = getUser(username)
  user.location = req.body
  saveUser(username, user)
  res.end()
})

1 个答案:

答案 0 :(得分:0)

我假设您在Express中使用bodyParser,否则jQuery版本将无效。

headers: {
    'Content-Type': 'application.json'
},

应该是

headers: {
    'Content-Type': 'application/json'
},