如何在 jQuery ajax 中使用 GET 请求发送原始数据?

Posted

技术标签:

【中文标题】如何在 jQuery ajax 中使用 GET 请求发送原始数据?【英文标题】:How to send the raw-data with GET request in jQuery ajax? 【发布时间】:2020-08-22 12:17:25 【问题描述】:

现在,有了新的 API,我只得到了一个 url 和一些参数。如果我这样发送参数

https://api.somthing.com/Search?zip=$zip&id=$id&key=$key

那么这不起作用。但是,如果我将 POSTMAN 数据作为原始数据发送,那么它就可以工作了。 GET 请求不应该有正文。但是我已经使用 cURL 在 php 中实现了相同的功能,并使用原始数据创建了自定义 GET 请求。我不知道如何在 jQuery AJAX 中实现相同的功能。请帮忙。

我尝试过这样的事情:

var settings = 
  "url": url,
  "method": "GET",
  "timeout": 0,
  "headers": 
    "Content-Type": "application/json",
    "Cookie": "__cd=d311a6f2055dd5fb9462c000a297f4a0158451265"
  ,
  "data": jsonData,
;

$.ajax(settings).done(function (response) 
  console.log(response);
);

提前致谢。

【问题讨论】:

@Quentin 的回答是正确的,但是我会向创建 API 的人提出这个问题,因为这是他们需要纠正的错误 嗨,实际上我已经在 PHP 中使用 cURL 解决了这个问题。所以我认为这在 jQuery 中也是可能的。 【参考方案1】:

GET 请求不应有正文。

这是真的。 HTTP 规范中明确未定义带有正文的 GET 请求的行为。

next version of the specification 语言更强大:

客户端不应该在 GET 请求中生成内容,除非它是直接发送到源服务器,该源服务器先前已在带内或带外表明此类请求有目的并且将得到充分支持。源服务器不应依赖私有协议来接收内容,因为 HTTP 通信的参与者通常不知道请求链中的中介。

XMLHttpRequest(jQuery Ajax 使用的底层 API)不支持发送带有 GET 请求的请求正文(XHR 的继任者 - fetch 不支持)。

浏览器作为“HTTP通信的参与者”,不知道你和服务器的约定发送带有body的GET,不支持。

这样做的唯一方法是通过您的服务器代理请求。

【讨论】:

以上是关于如何在 jQuery ajax 中使用 GET 请求发送原始数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 jQuery ajax 中使用 GET 请求发送原始数据?

如何使用 jQuery 在 GET 请求中传递参数

使用Ajax Get方法在前端获取MongoDB数据

如何使用 JQuery .Ajax 进行 Pingdom 检查?

Ajax_使用 jQuery 实现Ajax

jQuery.get(url, [data], [callback], [type])