2014-07-23 65 views
0

我正在编写一个可以进行服务调用的chrome扩展。交叉原点ajax请求未通过JSON格式的请求有效负载

当我做一个相同的起源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"} 

但是,当我做交叉起源requst(在地方sameOriginURL的这一请求插入crossOriginURL),在Chrome中调试程序一样,发布请求显示了请求负载,因为这:

foo1=bar1&foo2=bar2 

和我打电话的服务不喜欢,所以它会引发序列化异常。如何将我的请求负载传递为JSON对象。

回答

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) 
});