jQuery .ajax() - 向POST请求添加查询参数?

fil*_*d13 12 javascript ajax jquery json

要使用jQuery AJAX将查询参数添加到URL,请执行以下操作:

$.ajax({
  url: 'www.some.url',
  method: 'GET',
  data: {
      param1: 'val1'
  }
)}
Run Code Online (Sandbox Code Playgroud)

这会产生一个像url的网址 www.some.url?param1=val1

当方法是POST时,我该怎么做?在这种情况下,data不再作为查询参数附加 - 它构成了请求的主体.

我知道我可以在ajax请求之前手动将params手动附加到url,但我只是有这种唠叨的感觉,我错过了一些明显的方法,这比我需要执行的~5行短在ajax调用之前.

Ate*_*ral 16

jQuery.param()允许您将对象的属性序列化为查询字符串,您可以自己将其附加到URL:

$.ajax({
  url: 'http://www.example.com?' + $.param({ paramInQuery: 1 }),
  method: 'POST',
  data: {
    paramInBody: 2
  }
});
Run Code Online (Sandbox Code Playgroud)

  • 如果基本 url 尚无参数,则该方法有效,这不是一个可靠的解决方案。我当然可以使用 `$.param()` 创建一个查询字符串,然后执行类似 `url += (url.match(/\?/) ? '&' : '?') + queryString;` 的操作安全地追加查询字符串,但这会变成一个可怕的单行代码,或者我必须在实际调用 ajax 之前准备好 url。这当然有效,但并不理想。如果有人没有提出更好的建议,我会接受。 (2认同)