要使用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调用之前执行。
答案 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
的服务器分页选项(即kendoGrid
, page
,pageSize
和skip
)。此外,后端分页选项必须是其他名称的查询参数。因此必须在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()