• jquery ajax 报交请求返回 HTTP 400 错误


     提交请求的AJAX代码如下:

    点击(此处)折叠或打开

    1.                     $.ajax({
    2.                         url: "${ctx}/selfhelp/userAttributeAnalysis/userAttributeList",
    3.                         type: "POST",
    4.                         data:{appId:appId,
    5.                             type:type,
    6.                             startDate:startDate,
    7.                             endDate:endDate,
    8.                             deviceType:deviceType,
    9.                             displayType:displayType},
    10.                         dataType: "json",
    11.                         success: paddinglist
    12.                     });

        里面data是传的一些参数。

        ACTION使用的是SpringMVC的注解方式,接收方法如下:

    点击(此处)折叠或打开

    1. @RequestMapping(value = "/userAttributeList")
    2. @ResponseBody
    3. public List<UserAttribute> userAttributeList(HttpServletRequest request,
    4.      int type, String appId, int deviceType, int displayType,
    5.      Date startDate, Date endDate, ModelMap modelMap) throws Exception {
    6.         。。。。。。。。
    7. }

        接收的地方也接收了这些参数,但通过DEBUG看,根本就没到这个方法里,在外层就抛错了。
        于是我Debug在DispatcherServlet上,发现在框架自动填充Date类型时,使用的格式是"yyyy-MM-dd HH:mm:ss",是在父类里有以下代码:

    点击(此处)折叠或打开

    1.     @InitBinder
    2.     public void initBinder(ServletRequestDataBinder binder)
    3.     {
    4.         SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    5.         binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
    6.     }

        但我在WEB上设置的日期,格式是yyyy-MM-dd。
        原来如此,那解决办法就显而易见了。可以在ajax里将时间传入时加入时分秒,也可以改initBinder。

  • 相关阅读:
    深入浅出Win32多线程程序设计【2】线程控制
    深入浅出Win32多线程程序设计【1】基本概念
    在两个ASP.NET页面之间传递值
    Javascript基础
    DataGrid的几个小技巧
    推荐取代Visio的中国人的软件——Edraw
    ASP.NET如何防范SQL注入攻击
    软件版本号规定原则
    三层体系结构总结(三)
    .Net工具 .NET文档生成工具2.2
  • 原文地址:https://www.cnblogs.com/exmyth/p/5314536.html
Copyright © 2020-2023  润新知