Javascript 获取jQuery$.ajax以在Get的主体中发送数据

Javascript 获取jQuery$.ajax以在Get的主体中发送数据,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有一个jQuery Core 2.1.4的小功能: function ajax(url, method, data, success) { $.ajax({ contentType: "application/json", data: JSON.stringify(data), dataType: "json", method: method, processData: false, url: url }); } 然后这个代码: var

我有一个jQuery Core 2.1.4的小功能:

function ajax(url, method, data, success) {
  $.ajax({
    contentType: "application/json",
    data: JSON.stringify(data),
    dataType: "json",
    method: method,
    processData: false,
    url: url
  });
}
然后这个代码:

var myPage = "http://localhost/blankResponse";
var myFunc = function(data) {
  alert(data);
};

ajax(myPage, "POST", {}, myFunc);   // Request to "testpage" with body
ajax(myPage, "PUT", {}, myFunc);    // Request to "testpage" with body
ajax(myPage, "DELETE", {}, myFunc); // Request to "testpage" with body
ajax(myPage, "GET", {}, myFunc);    // Request to "testpage?{}" with no body
GETing将
数据
参数添加到URL,而其他函数将其添加为请求主体。有没有一种方法可以让jQuery(没有双关语)在请求体中发送数据

用于获取的Chrome开发工具:

用于POST的Chrome开发工具(与PUT/DELETE相同):

您可以将主体放入GET请求中,如本SO中所述。但我尝试了
window.fetch
XMLHttpRequest
,但这两种方法似乎都不允许使用实体进行get

一种方法是通过您自己的服务器代理请求,并可能使用服务器端语言执行请求,该语言可以在get请求中发送正文(假设我没有错过使用浏览器javascript发送带有get请求的正文的方法…)

请考虑将数据放在QuiSQL字符串上,如果可以的话,因为将一个实体放入GET请求是很奇怪的:

function ajax(url, method, data, success) {
  if (method.toLowerCase() === 'get') {
      data = $.param(data); //url encode the data if GET request
  } else {
      data = JSON.stringify(data); //I think jquery 2.1.4 will pretty much do this for you, btw, but just for good measure, I'll do it how you had it.
  }

  $.ajax({
    contentType: "application/json",
    data: data,
    dataType: "json",
    method: method,
    processData: false,
    url: url
  });
}

当您使用
GET
方法时,通常会将数据添加到url中,您是否知道
GET
POST
PUT
DELETE
之间的差异?可能是重复的。我也喜欢这家伙的结论:“所以,是的,你可以用GET发送一具尸体,不,这样做从来没有用过。”@JohnnyFun我不知道这个问题怎么“相关”,更不用说重复了。我问过如何做X,而你们试图把它作为反对X的东西的复制品来关闭?你们为什么要这样做?谢谢你们,先生们。伙计,我们只是想给你指出正确的方向。HTTP是一种协议。我们程序员避免违反协议,除非这是绝对必要的,这样我们可以更容易地读懂对方的废话。也许解决方案是修改“ajax”函数,如果方法是get,则使用jquery的$.param函数,并将结果附加到url,然后跳过将其作为请求体传递。我的意思是?更新了我的答案来解释更多如果你们能解释投票结果会有帮助。不确定你需要改变什么。看起来您无法在浏览器javascript中的GET请求中发送正文。如果我错了,请纠正我。再次更新以通过服务器代理请求来添加潜在的解决方法。