如何在负载中发送数据而不是表单数据

30

我正在尝试从我制作的Web脚本向Alfresco服务发出请求,通过负载传递一些JSON数据。

这是Alfresco服务:

http://localhost:8080/share/proxy/alfresco/api/internal/downloads

我需要传递一个包含一些脚本节点的 JSON 数组,例如:

var jsonData = "[{'nodeRef':'workspace://SpacesStore/920b43d4-e79c-40eb-96f3-1dff3a169929'},  {'nodeRef':'workspace://SpacesStore/f19fba4b-0cf6-4379-a858-70d0d7d9efb0'},{'nodeRef':'workspace://SpacesStore/6ea51288-9364-4070-a23b-499025a6c1f9'}]";

我会按照这种方式来做决定。

$.ajax({
    url: serviceUrl,
    type: "POST",
    dataType: "json",
    data: jsonData
}); 

不幸的是,当我从开发者工具中检查请求列表时,我发现我的JSON数据作为表单数据传递,并收到了内部服务器错误响应。

我在另一个网站上看到同样的服务使用了负载传递数据,因此,我认为真的需要将数据传递到负载中。

有人知道如何强制实现吗?

1个回答

47

我认为这取决于请求的Content-Type头部;如果内容类型是"application/x-www-form-urlencoded",那么它将显示在表单数据下面。如果您使用诸如Content-Type: application/json之类的内容类型,则json应该是载荷的一部分。您可以使用:

$.ajax({
    url: serviceUrl,
    type: "POST",
    dataType: "json",
    data: jsonData,
    contentType: "application/json"
});       

contentType: "application/json" 解决了这个问题! - Leonardo Beal
13
JSON.stringify( jsonData )可以解决一些问题。 - Jacob van Lingen
2
答案对我没有解决问题,但是 JSON.stringify(jsonData) 解决了。 - thdoan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接