一尘不染

使用jQuery $ .ajax()时如何使用GET在请求正文中发送数据

javascript

我正在使用的服务API具有给定的GET方法,该方法要求将数据发送到请求的正文中。

正文中所需的数据是用连字符分隔的ID列表,并且可能非常大,因此必须在正文中发送,否则可能会在浏览器/代理/网络服务器等链中的某处出现foobar。请注意,我无法控制服务或API,因此请不要提出更改建议。

我正在使用以下jQuery代码,但是在提琴手中观察请求/响应,尽管我将“
processData”选项设置为false,我仍然可以看到正在发送的“数据”始终被转换并附加到查询字符串中。

$.ajax({
   url: "htttp://api.com/entity/list($body)",
   type: "GET",
   data: "id1-id2-id3",
   contentType: "text/plain",
   dataType: "json",
   processData: false, // avoid the data being parsed to query string params
   success: onSuccess,
   error: onError
});

有谁知道我可以如何强制在请求正文中发送“数据”值?感谢您的任何帮助,在此先感谢。


阅读 551

收藏
2020-05-01

共1个答案

一尘不染

通常,这不是系统使用GET请求的方式。因此,很难使您的库发挥作用。实际上,该规范说:“如果请求方法是GET或HEAD的区分大小写的匹配项,则好像数据为空。”
因此,除非您使用的浏览器不遵守规范的那一部分,否则我认为您不走运。

您可能可以在自己的服务器上为POST ajax请求设置一个端点,然后将其在服务器代码中重定向到带有主体的GET请求。

如果您不是绝对以主体作为数据来绑定GET请求,则有两个选择。

带有数据的POST:
这可能是您想要的。如果要传递数据,则可能意味着您正在修改某些模型或在服务器上执行某些操作。这些类型的操作通常是通过POST请求完成的。

使用查询字符串数据进行GET: 您可以将数据转换为查询字符串参数,然后将其以这种方式传递给服务器。

url: 'somesite.com/models/thing?ids=1,2,3'
2020-05-01