【问题标题】:Query on $.get(), Express and JSON in NodeJS application在 NodeJS 应用程序中查询 $.get()、Express 和 JSON
【发布时间】:2019-01-26 05:58:05
【问题描述】:

在使用 Express 的 NodeJS 应用程序中,我使用以下查询将数据从客户端发送到服务器

$('#frmadd').on('submit',function(e){
    e.preventDefault();
    form_elements = $('#frmadd').serializeArray();
    $.get('/add_details',{input: form_elements})
    .done(function(data){
      //SOME STATEMENTS
  },'json');  

我在服务器端使用bodyParser,并在上述代码的末尾附加了'json'。我读过它将数据流转换为 JSON 格式并将其发送到服务器。

而且我还读到 EXPRESS 实际上负责 JSON 转换,即,当从客户端发送到服务器时将对象字符串化,并在从服务器发送到客户端时自动解析。那么在这种情况下,为什么我们需要在代码中附加'json'?如果我错了,请纠正我。

同样在上面的代码中,添加或不添加'json' 没有任何区别。我可以很高兴地访问服务器端的数据对象。那么附加'json'提供的额外用途是什么

提前致谢。

【问题讨论】:

  • 您在代码中显示的 'json' 参数是未使用的 .done() 的第二个参数。
  • 您好,请注意处理 JSON 转换...??我们不需要在从客户端向服务器发送数据之前明确指定。??

标签: jquery json node.js express


【解决方案1】:

我知道您的请求中没有 JSON。您传递给$.get(url, dataObject) 的对象作为prop=val 对放入查询字符串中。 Express body-parser 模块为您解析查询字符串并将结果放入req.query 中。

查询字符串中的数据是jQuery编码的查询字符串,然后由Express中的body-parser模块解码解析。

如果您正在执行 POST,那么您可以决定是否要将数据编码为 JSON 或表单编码,但对于 GET 请求,数据进入始终为 URL 编码的查询字符串。

仅供参考,您在代码中显示的 'json' 参数显示为 .done() 的第二个参数,该参数未使用,因此被忽略。

【讨论】:

  • 感谢您的清晰解释。另外我的上述说法是否正确? - Express 负责 JSON 转换:从服务器发送到客户端时自动字符串化数据,当数据从客户端发送到服务器时自动解析?
  • @METALHEAD - 在某些情况下,某些 Express 中间件会自动为您解析 JSON,但这不是这里发生的情况。同样,在某些情况下,jQuery 会为您转换为 JSON 并在指定的情况下发送 JSON。但是,这又不是这里发生的事情。
【解决方案2】:

IT 用于设置数据的内容类型

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-11
    • 2012-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多