我正在编写一个进行服务呼叫的Chrome扩展程序。
当我创建一个相同的原始POST ajax请求时,我的数据对象将以JSON格式传递:
$.ajax(sameOriginURL, {
data : {
"foo1": "bar1",
"foo2": "bar2"
},
dataType: "json",
headers: { 'Content-Type':'application/json'}
})
在chrome调试器中,当我看到post请求时,请求有效负载显示为:
{ContentType: "JSON", foo1: "bar1", foo2: "bar2"}
但是当我使用cross origin requst做同样的事情时(在该请求中插入crossOriginURL来代替sameOriginURL),在chrome调试器中,post请求会显示请求有效负载,如下所示:
foo1=bar1&foo2=bar2
我正在调用的服务不喜欢这样,所以它会引发序列化异常。如何将我的请求有效负载作为JSON对象传递。
答案 0 :(得分:3)
在此处找到答案:JQuery Post sends form data and not JSON
我所要做的就是用JSON.stringify包装我的数据对象,它有效!!
$.ajax({
type: 'POST',
url: '<url>',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
data: JSON.stringify(object)
});