$.ajax({
url: '/metadata/hg_billing_cycle',
data: {"a":"b", "c":"d"},
datatype: "json",
contentType: "application/json",
type: 'POST',
error: handleError,
});
我在服务器上使用ruby:
post "/" do
puts "ummm: #{request.body.read}"
end
我得到以下输出:
ummm: a=b&c=d
代替ummm : {"a":"b", "c":"d"}
。为什么要这样做?
答案 0 :(得分:1)
您正在从$.ajax docs
传递一个对象作为数据参数数据
键入:PlainObject或String
要发送到服务器的数据。如果不是字符串,它将转换为查询字符串。它附加到GET请求的URL。请参阅processData选项以防止此自动处理。对象必须是键/值对。如果value是一个数组,jQuery会根据传统设置的值使用相同的键序列化多个值(如下所述)。
因此您的对象将转换为查询字符串
如果你想发送json,那么你必须发送json 。
将您的对象转换为json(使用JSON.stringify
)并将其作为数据参数传递。
$.ajax({
url: '/metadata/hg_billing_cycle',
data: JSON.stringify({"a":"b", "c":"d"}),
datatype: "json",
contentType: "application/json",
type: 'POST',
error: handleError,
});