【问题标题】:Sending form JSON data to server via AJAX通过 AJAX 将表单 JSON 数据发送到服务器
【发布时间】:2016-07-18 06:30:33
【问题描述】:

我想手动将我的表单数据以 JSON 格式发送到服务器。 我将表单数据更改为下面的 JSON 格式。 我在客户端 javascript 中的数据是 JSON (ie{"firstname":"john","lastname":"smith"}

$.ajax({
    type: 'POST',
    url: "http://localhost:3000/UserRegistration",
    dataType: 'application/json',
    data: JSONData,
    success: function(data) {

    }
});

我正在使用 body-parser,在我的 server.js 代码中,我使用了 console.log(req.body) 但数据以这种格式显示

{ '{"firstname":"john","lastname":"smith"}': '' }

它添加了更多的花括号。这是为什么?如何访问服务器端的数据

【问题讨论】:

  • 代替application/json试试JSON

标签: javascript ajax node.js forms body-parser


【解决方案1】:

您只需序列化表单,bodyparser 就会为您解析成 json。

$.post('http://localhost:3000/UserRegistration', form.serialize(), function(data) {
    ...
});

【讨论】:

    【解决方案2】:

    dataType: 'application/json' 将期待来自serverjson 响应

    设置processData : falsecontentType : 'application/json'[Ref]

    processData:默认情况下,作为对象(技术上是字符串以外的任何内容)传入数据选项的数据将被处理并转换为查询字符串,以适应默认内容-输入"application/x-www-form-urlencoded"。如果要发送 DOMDocument 或其他未处理的数据,请将此选项设置为 false


    contentType: 向服务器发送数据时,使用此内容类型。默认为“application/x-www-form-urlencoded; charset=UTF-8”,在大多数情况下都可以。如果你明确地将内容类型传递给 $.ajax(),那么它总是被发送到服务器(即使没有发送数据)

    【讨论】:

      【解决方案3】:

      请直接将您的对象解析为 json。例如:JSON.Stringfy(obj)

      【讨论】:

      • 也同意Rayon |设置 processData : false 和 contentType : 'application/json'
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-25
      • 2016-01-02
      • 1970-01-01
      • 2018-03-27
      • 2016-03-31
      • 2016-01-21
      相关资源
      最近更新 更多