jquery - 在 jQuery Ajax POST 中序列化 JSON 数据包

标签 jquery ajax json

我有一个像套接字这样的数据结构

var s = {
    "a": "foo",
    "b": 5,
    "c": {"d": "a long string"},
    "e": {
        "f": {
            "g": {
                "h": [1, 0, -2.1, 1.43]
            }
        },
        "i": {
            "j": {
                "k": [-3.2, 3.003, 0, 0]
            }
        }
    }
};

我想将变量 s 的“a”、“b”、“c”和“e”键存储在数据库表中,以便我可以再次重建它们。我通过 jQuery Ajax POST 发送 s。这些值将被插入并存储为纯文本(“b”除外,它始终是数字)。

ajax: {
    url: uri,
    type: "POST",
    data: s,
    dataType: "json",
    success: function(data, status) { .. }
}

这是我遇到的问题。在 Firebug 中我可以看到我的 post 参数……它们真的很困惑。似乎数据已经在每个元素的级别上序列化(有点像深度序列化),而我希望得到类似的东西

e={"f":{"g":{"h":[1,0,-2.1,1.43]}},"i":{"j":{"k":[-3.2,3.003,0,0]}}}

更新:相反,我得到以下内容(我已经对下面的字符串进行了转义,因此更具可读性)

a=foo&b=5&c[d]=a long string&e[f][g][h][]=1&e[f][g][h][]=0&e[f][g][h][]=-2.1&e[f][g][h][]=1.43

也许我的做法是错误的,所以请随时指导我更好的方法。

最佳答案

使用JSON.stringify方法将数据对象序列化为字符串并发布。在服务器端,只需将其按原样存储在数据库中即可。试试这个

ajax: {
    url: uri,
    type: "POST",
    data: { data: JSON.stringify(s) },
    dataType: "json",
    success: function(data, status) { .. }
}

几乎所有现代浏览器都原生支持 JSON。对于本身没有它的浏览器,您可以包含 http://ajax.cdnjs.com/ajax/libs/json2/20110223/json2.js 中所需的 js。

关于jquery - 在 jQuery Ajax POST 中序列化 JSON 数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9013526/

相关文章:

javascript - 将 jQuery 绑定(bind)到多个元素

javascript - SyntaxError : JSON. 解析:预期的属性名称或输入值中的 '}'

javascript - Phalcon 使用 jquery 自动分页

javascript - 如何向包含特定尺寸图像的父 Div 添加类?

javascript - 一次在一个元素上调用自定义函数

javascript - jQuery Ajax 访问自定义响应 header

javascript - 返回状态码并在客户端获取消息或直接向客户端发送错误消息

java - jackson 和可怕的 IOException

Java - Swing - 似乎无法让增量绘画工作(通过可执行 Jar 文件运行)

c# - 从服务器或客户端检查或更改键盘输入语言