weixin_33737134 2017-01-13 10:23 采纳率: 0%
浏览 57

Ajax JSON空传递

To all whom it may concern (I am really just trying to reach the "please add more detail" limit)

When passing data to the server as below the body is shown as empty.

Server

// POST method route
app.post('/pass', function (req, res) {
  console.log("server received POST from homepage")
  console.log(req.body)
  res.send('POST request to the homepage')
})

Client

function ajaxJSONFunc(){
      var inputData = document.getElementById('input2').value

      var json = {"data":"abc"};

      $.ajax({
        url: "/https/ask.csdn.net/pass",
        type: "POST",
        data: json
        contentType: "application/json",
        // dataType: "json", only use if you need to responce data to be JSON, if its not JSON an error will fire when uncommented. defaults to text
        success: function(data) {
         console.log("data passed back from server is:" + data)
        },
        error: function(err) {
           console.log("an error occured")
           console.log(err)
        }
      })
}

Works when passing like this (below), but I would prefer to send JSON data and not strings

  $.ajax({
    url: "/https/ask.csdn.net/pass",
    type: "POST",
    data: inputData,
    contentType: "application/x-www-form-urlencoded",
    //dataType: "json", only use if you need to responce data to be JSON, if its not JSON an error will fire when uncommented. defaults to text
    success: function(data) {
     console.log("data passed back from server is:" + data)
    },
    error: function(err) {
       console.log("an error occured")
       console.log(err)
    }
  })
  • 写回答

2条回答 默认 最新

  • Lotus@ 2017-01-13 10:34
    关注

    You defined contentType: "application/json". That's means you have to send a json object.

    You have to use JSON.stringify() method.

    data: JSON.stringify(json)
    

    JSON.stringify function turns a Javascript object into JSON text and stores it in a string.

    评论

报告相同问题?