【问题标题】:How to preserve types in query strings如何保留查询字符串中的类型
【发布时间】:2023-04-06 07:03:01
【问题描述】:

我正在尝试组合一个使用 json 数据的 API,但在保存变量类型时遇到了问题。

警告:我正在使用 Node.js

给定数据:

{
  id: "string",
  data: [
    {input: [0,1,0], output: [1,1]},
    {input: [1,0,0], output: [1,0]}
  ]
}

当我使用该数据发出 jquery ajax 发布请求时,它被传输为:

data[0][input][]    0
data[0][input][]    1
data[0][input][]    0
data[0][output][]   1
data[0][output][]   1
data[1][input][]    1
data[1][input][]    0
data[1][input][]    0
data[1][output][]   1
data[1][output][]   0
id                  string

或:id=string&data%5B0%5D%5Binput%5D%5B%5D=0&data%5B0%5D%5Binput%5D%5B%5D=1&data%5B0%5D%5Binput%5D%5B%5D=0&data%5B0%5D%5Boutput%5D%5B%5D=1&data%5B0%5D%5Boutput%5D%5B%5D=1&data%5B1%5D%5Binput%5D%5B%5D=1&data%5B1%5D%5Binput%5D%5B%5D=0&data%5B1%5D%5Binput%5D%5B%5D=0&data%5B1%5D%5Boutput%5D%5B%5D=1&data%5B1%5D%5Boutput%5D%5B%5D=0

我需要做的是在服务器端解码数据,但数据中我的数组的所有值都被转换为字符串。 p>

是否有保留值类型的技术,例如:“string”或“int”等?

我目前正在使用 npm 上的 qs 模块来解析我的 POST 请求正文。

【问题讨论】:

    标签: node.js get query-string http-post


    【解决方案1】:

    JQuery 将 AJAX 请求的 data 选项中传递的任何对象序列化为 application/x-www-form-urlencoded 格式(就像查询字符串一样)。您想要的是JSON.stringify() 您的对象并将结果字符串作为data 传递,同时将Content-Type 设置为前面的答案提到的。

    请记住,dataType 选项指定了 jQuery 应该如何处理对请求的响应,而不是如何编码请求的正文(我已经被这个烧死了)。

    【讨论】:

      【解决方案2】:

      由于它是一个 JSON 服务器,请在 POST 请求中设置 Content-Type: application/json,这样您将解析一个对象而不是字符串。该对象将保留数据类型。在服务器上使用 req.is('application/json') 确保请求是 'application/json' 类型。

      【讨论】:

        【解决方案3】:

        这是一个可行的解决方案,希望对您有所帮助。

        $.ajax({
            type: 'POST',
            data: JSON.stringify(data),
            contentType: 'application/json',
            url: 'http://localhost:3000/endpoint',                      
            success: function(data) {
                //TODO: do something with data   
            }
        });
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-10-04
          • 2014-11-12
          • 1970-01-01
          • 2018-05-11
          • 2015-03-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多