0

我正在尝试使用类似的参数调用 ajax:

jQuery.ajax({
    url: ajax_url,
    type: "POST",
    data: {
        fields: {
            id: id,
            name: name
        }
    }
});

这似乎不起作用。有没有办法做我想做的事?

4

2 回答 2

0

您可以传递一个数组,但它必须采用特定格式:

[
    {
        name: "thefieldname",
        value: "thefieldvalue"
    },
    {
        name: "anotherfieldname",
        value: "anotherfieldvalue"
    }
]

稍后将转换为查询字符串,例如"thefieldname=thefieldvalue"发送到服务器时。如果您希望发送的不仅仅是名称和值,则需要将 JSON 发送到服务器。

data: { json: JSON.stringify(myobjectorarray) }

并从jsonpost 变量服务器端访问它。

于 2013-07-30T21:01:21.467 回答
0

假设您的服务器需要 JSON,您需要对其进行字符串化:

jQuery.ajax({
    url: ajax_url,
    type: "POST",
    data: JSON.stringify({
        fields: {
            id: id,
            name: name
        }
    }),
    contentType: "application/json; charset=utf-8"
});

如果您需要它在旧浏览器上工作,请确保包含json2.js 。

当您尝试在不对 javascript 对象进行字符串化并标记 的情况下发布时contentType,它会将请求写入 URL 编码参数,这在复杂对象类型上变得很时髦。查看浏览器开发工具或 Fiddler 中的请求正文,了解我的意思。

于 2013-07-30T20:46:05.237 回答