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

我正在使用的服务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

});

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

回答:

通常,这不是系统使用GET请求的方式。因此,很难使您的库发挥作用。实际上,该规范说:“如果请求方法是GET或HEAD的区分大小写的匹配项,则好像数据为空。”

因此,除非您使用的浏览器不遵守规范的那一部分,否则我认为您不走运。

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

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

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

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

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

以上是 使用jQuery $ .ajax()时如何使用GET在请求正文中发送数据 的全部内容, 来源链接: utcz.com/qa/420246.html

回到顶部