我正在尝试使用类似的参数调用 ajax:
jQuery.ajax({
url: ajax_url,
type: "POST",
data: {
fields: {
id: id,
name: name
}
}
});
这似乎不起作用。有没有办法做我想做的事?
您可以传递一个数组,但它必须采用特定格式:
[
{
name: "thefieldname",
value: "thefieldvalue"
},
{
name: "anotherfieldname",
value: "anotherfieldvalue"
}
]
稍后将转换为查询字符串,例如"thefieldname=thefieldvalue"
发送到服务器时。如果您希望发送的不仅仅是名称和值,则需要将 JSON 发送到服务器。
data: { json: JSON.stringify(myobjectorarray) }
并从json
post 变量服务器端访问它。
假设您的服务器需要 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 中的请求正文,了解我的意思。