Javascript 当试图发送一个属性为另一个对象的对象时,jqueryajax返回400个错误请求
我使用jQuery发出以下ajax请求:Javascript 当试图发送一个属性为另一个对象的对象时,jqueryajax返回400个错误请求,javascript,jquery,json,ajax,spring-mvc,Javascript,Jquery,Json,Ajax,Spring Mvc,我使用jQuery发出以下ajax请求: var obj = { 'id': id, 'client' : client, 'amount' : amount, 'addressFrom' : addressFrom, 'addressTo' : addressTo, 'date': date }; $.ajax({ headers: { 'A
var obj = {
'id': id,
'client' : client,
'amount' : amount,
'addressFrom' : addressFrom,
'addressTo' : addressTo,
'date': date
};
$.ajax({
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
url: "/saveOrUpdateOrder",
type: 'post',
data: JSON.stringify(obj),
success : function(data, status) {
refreshPage(data);
},
});
我的控制器中有以下方法:
@RequestMapping(value = "/saveOrUpdateOrder", method = {RequestMethod.POST})
public String saveOrUpdateOrder(Model model, @RequestBody Order order) {
log.info("/jquery order controller -> saveOrUpdateOrder");
// some other actions
}
以下是订购客户机的类:
public class Order {
private Long id;
private Date date;
private Client client;
private Integer amount;
private String addressFrom;
private String addressTo;
public Order() {
date = Calendar.getInstance().getTime();
amount = 0;
}
// setters and getters
}
public class Client {
private Long id;
private String name;
private String familyName;
private String phone;
private String address;
private Integer amount;
private Date lastOrder;
public Client() {
amount = 0;
}
// setters and getters
}
我也有自己的ClientEditor,因为我在ajax请求的对象“obj”中以“客户机”的形式发送“id”:
@Component("clientEditor")
public class ClientEditor extends PropertyEditorSupport {
@Autowired(required = true)
private ClientService clientService;
public ClientEditor() {
}
@Override
public void setAsText(String text) {
Client client = clientService.getClientById(Long.valueOf(text));
setValue(client);
}
}
在我的控制器中,我有:
@Autowired(required = true)
private ClientEditor clientEditor;
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.registerCustomEditor(Client.class, clientEditor);
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy hh:mm");
sdf.setLenient(true);
binder.registerCustomEditor(Date.class, new CustomDateEditor(sdf, true));
binder.registerCustomEditor(String.class, new StringTrimmerEditor(true));
}
当我在没有ajax的情况下也这样做时,只使用带有action=/saveOrUpdateOrder的表单,效果很好。但是当我尝试使用ajax发送json时,结果总是有400个错误请求。我想问题在于从JSON数据获取订单。
我试图关闭ClientEdit并发送这样的对象
var client = {
'id': clientId
}
var obj = {
'id': id,
'client' : client,
'amount' : amount,
'addressFrom' : addressFrom,
'addressTo' : addressTo,
'date': date
};
但它也不起作用。我也尝试了带有完整参数的客户端变量。有什么问题吗?如何正确操作?您的类路径中是否有jackson json库?您的原始json数据在通过浏览器发送时是什么样子的?能否显示您使用表单操作发送的内容?这就是我作为客户发送id时的样子:{id:61,客户:41,金额:44,地址From:Akhmatova str 35,地址to:Harkivs'ke sh.19,日期:2015年10月2日11:37}当我尝试将客户机作为对象发送时:{id:3,客户机:{id:7},金额:200,addressFrom:addressFrom,addressTo:new address to,日期:17.09.2015 02:50}