【问题标题】:Pass js object with ajax request [duplicate]使用ajax请求传递js对象[重复]
【发布时间】:2014-09-01 16:48:19
【问题描述】:

我需要通过ajax请求向服务器发送一个js对象; 是一个对象,包含节点 js 中使用 Sequelize orm 的 sql 查询的参数;一个例子是这样的:

var data =
{
    include: [
        { model: model.Shop },
        { model: model.Product,
            include: [
                { model: model.File }
            ]
        }
    ]
}

它可以包含嵌套在多个层次上的对象数组; 在发送之前,如果需要,我可以将其转换为有效的 JSON,如下所示:

var data =
{
    "include": [
        { "model": "model.Shop" },
        { "model": "model.Product",
            "include": [
                { "model": "model.File" }
            ]
        }
    ]
}

我尝试将其作为 JSON 发送:

$.ajax({
    //...
    data: data
});

问题是我在节点服务器中对接收到的字符串做JSON.parse时,每个属性的值都是字符串,不被识别为模型对象;

我怎样才能让我的服务器能够理解这一点?

【问题讨论】:

  • “如果需要,我可以将它转换为有效的 JSON,就像这样” 这不是 JSON,它仍然是一个 JavaScript 对象。 {"foo": 42}{foo: 42} 相同。

标签: javascript jquery ajax node.js


【解决方案1】:

尝试使用JSON.stringify

$.ajax({
    data: JSON.stringify(data)
});

【讨论】:

  • 好的,问题是我正在尝试发送未在 Ember 客户端中定义的标头“model.Shop”(它在节点服务器中定义);所以我认为没有办法做到这一点;可能我应该发送一个字符串,然后在节点服务器中编写一个函数来解析它......
  • 它不适用于Map
【解决方案2】:

不要在数据对象中手动添加引号。

试试

JSON.stringify(data)

它将转换为可接受的字符串格式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-10
    • 1970-01-01
    • 2014-05-07
    • 2012-02-12
    • 2011-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多