如何在有效负载而不是formdata上发布数据

Enr*_*ico 22 ajax jquery json alfresco payload

我正在尝试从我创建的Web脚本向Alfresco服务发出请求,并在有效负载上传递一些json数据.

这是Alfresco服务:

http://localhost:8080/share/proxy/alfresco/api/internal/downloads
Run Code Online (Sandbox Code Playgroud)

我需要传递一个json数组whit一些脚本节点,如下所示:

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'}]";
Run Code Online (Sandbox Code Playgroud)

我这样打电话

$.ajax({
    url: serviceUrl,
    type: "POST",
    dataType: "json",
    data: jsonData
}); 
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我从开发人员工具中查询请求列表时,我看到我的json数据在请求中作为Form数据传递,我收到内部服务器错误响应.

我看到在另一个网站上使用相同的服务,并且数据作为有效负载传递,因此,我认为确实需要在有效负载上传递数据.

有谁知道如何强迫它?

Gar*_*thL 37

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

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

  • +`JSON.stringify(jsonData)`也可以解决一些问题 (3认同)
  • 答案并没有解决我的问题,但“JSON.stringify(jsonData)”解决了。 (2认同)