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

时间:2017-03-30 03:39:35

标签: javascript jquery json ajax

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

$.ajax({
  url: 'www.some.url',
  method: 'GET',
  data: {
      param1: 'val1'
  }
)}

会产生类似www.some.url?param1=val1

的网址

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

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

2 个答案:

答案 0 :(得分:15)

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

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

答案 1 :(得分:0)

谢谢@Ates Goral的 invoiceID: "", client: [ { _id: "", salutation: "", companyname: "", firstname: "", lastname: "", street: "", housenumber: "", zipCode: "", place: "", }, ], buildingProject: "", place: "", servicetext: "", paid: "", transferred: 0, 提示。我的问题是我无法更改jQuery.ajaxPrefilter(),因为它已绑定到url,并且后端Web API不支持kendoGrid的服务器分页选项(即kendoGridpagepageSizeskip)。此外,后端分页选项必须是其他名称的查询参数。因此必须在take中放置一个属性以触发预过滤。

data

如您所见,var grid = $('#grid').kendoGrid({ // options here... dataSource: { transport: { read: { url: url, contentType: 'application/json', dataType: 'json', type: httpRequestType, beforeSend: authentication.beforeSend, data: function(data) { // added preFilterMe property if (httpRequestType === 'POST') { return { preFilterMe: true, parameters: parameters, page: data.page, itemsPerPage: data.pageSize, }; } return { page: data.page, itemsPerPage: data.pageSize, }; }, }, }, }, }); 选项与transport.read相同。并在预过滤位中:

jQuery.ajax()