公司通常情况用的post请求是用对应的参数名进行接收,并且接收了pageObject对象,代码如下:
js:
var deferred = $.ajax({
type: "POST",
url: "getViolationOrderDetail.do",
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
dataType: "json",
data: {
"orderNo": orderNo
, "statusNo": statusNo
},
...
controller
public ResultObject getViolationOrderDetail(PageObject pageObject,
@RequestParam (required = false,defaultValue = "")String orderNo,
@RequestParam (required = false,defaultValue = "")String statusNo){
今天想要换一种方式,通过jsonObject发送,接收。
如果js不变,直接修改controller,则无法接收,报错500
controller没有接收到任何请求。
思考:是不是发送请求的方式不正确,设置了dataType为json,content-Type为默认的
contentType 发送数据到服务器时所使用的内容类型。默认是:"application/x-www-form-urlencoded"。
dataType 预期的服务器响应的数据类型。
所以application/x-www-form-urlencoded是什么类型的数据?表单类型,只能根据参数名称一个一个接收,这需要写很多controller接收的参数。
如:
//js:
table = $('#orderTab').off().grid({
"ajax": {
"url": "getLongTimeOrderList.do",
"dataSrc": "data",
"type" : "post",
"data": function (d) { //提交参g数给服务器进行查询
var mobileAccountSearch = $('#mobileAccountSearch').val();
var userNameSearch = $('#userNameSearch').val();
var vehNoSearch = $('#vehNoSearch').val();
var shopIdSearch = $('#shopIdSearch').val();
var orderNoSearch = $('#orderNoSearch').val();
var returnDateBegin = $('#returnDateBegin').val();
var returnDateEnd = $('#returnDateEnd').val();
var statusNo = $('#statusNo').val();
//查询参数
d.mobileAccount= mobileAccountSearch;
d.userName= userNameSearch;
d.vehNo= vehNoSearch;
d.shopId=shopIdSearch;
d.orderNo= orderNoSearch;
d.returnDateBegin=returnDateBegin;
d.returnDateEnd=returnDateEnd;
d.orderStatus=statusNo;
}
},
// "searching":true, //显示查询框
"columns": columns
});
//controller
public PageObject getBranchList(PageObject pageObject,String mobileAccount,String orderNo,String returnDateBegin,String returnDateEnd,String shopId,String userName,String vehNo,String orderStatus){
https://matthung0807.blogspot.com/2018/02/jqueryajax-contenttypedatatype.html
https://www.jianshu.com/p/c6a0dc9000ef
http://api.jquery.com/jquery.ajax/
跨域
如果数组,list=xxx,xxx 用逗号隔开,不需要用中括号