Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当试图发送一个属性为另一个对象的对象时,jqueryajax返回400个错误请求_Javascript_Jquery_Json_Ajax_Spring Mvc - Fatal编程技术网

Javascript 当试图发送一个属性为另一个对象的对象时,jqueryajax返回400个错误请求

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

我使用jQuery发出以下ajax请求:

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}