Ajax发布调用控制器获得400(错误请求)

时间:2016-06-24 16:55:05

标签: javascript jquery ajax

我正在尝试使用jquery实现一个ajax调用。当我提交调用时,它正在抛出400 Bad Request ..我不知道我在ajax调用中做错了什么..需要帮助修复这个.. < / p>

 submitHandler:function(form){
            var emailSub = $("#emailSubTxtArea").val();
            var emailBody = $("#emailBodyTxtArea").val();
            if(confirm("You are about to send Email Communication, Are you sure..?")){
            $.ajax({
                type: "POST",
                url:  $("#applicationUrl").val() +"/web/utilities/sendEmailMessage",
                dataType: "json",
                //cache:false,
                contentType: "application/json; charset=utf-8",
                data:JSON.stringify({emailSubject : emailSub,emailMsg : emailBody}), 
                success:function(data)
                {
                    console.log("Sending Email Notification was success.");
                },
                error: function(x, t, m) {
                    console.trace();
                    if (!(console == 'undefined')) {
                    console.log("ERROR: " + x + t
                            + m);
                    }
                    }
           });
        }
return false;
        }

我的控制器代码:

@RequestMapping(value="/sendEmailMessage",method=RequestMethod.POST)
    public ModelAndView sendEmailCommunication(@RequestParam("emailSubject") String emailSubject,@RequestParam("emailMsg") String emailBody,HttpServletRequest request){
        ModelAndView view = null;
        StringBuffer sMsg = new StringBuffer();
        StringBuffer eMsg = new StringBuffer();
        boolean isAdmin = false;
        try{
        String loggedInUser = request.getHeader("sm_user").trim();
         isAdmin = getUserAdminRights(request);
        if(isAdmin){
            boolean status = emailService.sendEmailCommuncation(emailSubject,emailBody);
            if(status){
                sMsg.append(" Sending SiteMinder Notification Email was Success.");
            }
            else{
                eMsg.append(" Oops! Something went wrong while sending Email Notification. Pls check logs");
            }
        }
        else{
             view = new ModelAndView("redirect:/web/utilities/not_authorized");
             return view;
        }
        }
        catch(Exception ex){
            ex.printStackTrace();
            eMsg.append("Oops! Something went wrong while sending Email Notification. Pls check logs");
        }
        view = new ModelAndView("EmailCommunication");
        view.addObject("isAdmin", isAdmin);
        view.addObject("sMsg", sMsg.toString());
        view.addObject("eMsg", eMsg.toString());
        return view;
    }

我真的打了我的头4小时......需要帮助。 感谢..

3 个答案:

答案 0 :(得分:1)

您的数据keys需要引号。将emailSubject: emailSub,emailMsg : emailBody更改为"emailSubject" : emailSub, "emailMsg" : emailBody

您在}的最后还缺少结束submitHandler,可能只是粘贴错误?

答案 1 :(得分:0)

不要对数据进行字符串化

  
    

更改

  
data:JSON.stringify({emailSubject : emailSub,emailMsg : emailBody}),

 to

data:{emailSubject : emailSub,emailMsg : emailBody},

答案 2 :(得分:0)

我对我的ajax调用和现在用户@RequestBody的控制器进行了更改,现在它正常工作......

我的ajax代码:

 submitHandler:function(form){
            var jsonObj = getData();        
            if(confirm("You are about to send Email Communication, Are you sure..?")){
            $.ajax({
                type: "POST",
                url:  $("#applicationUrl").val() +"/web/utilities/sendEmailMessage",
                dataType: 'json',
                cache:false,
                headers: { 
                    'Content-Type': 'application/json' 
                    },
                data:JSON.stringify(jsonObj),
                //data: ({emailInfo : JSON.stringify({emailSubject:emailSub,emailMsg:emailBody})}),
                success:function(response)
                {
                    response.html();
                },
                error: function(x, t, m) {
                    console.trace();
                    if (!(console == 'undefined')) {
                    console.log("ERROR: " + x + t
                            + m);
                    }
                    }
           });
        }
            return false;
        }
function getData(){
    var object ={
            emailSubject : $("#emailSubTxtArea").val(),
            emailMsg : $("#emailBodyTxtArea").val()

    };
    return object;


}

控制器:

@RequestMapping(value="/sendEmailMessage",method=RequestMethod.POST)
    public ModelAndView sendEmailCommunication(@RequestBody EmailReqInfo emailInfo){
        ModelAndView view = null;
        StringBuffer sMsg = new StringBuffer();
        StringBuffer eMsg = new StringBuffer();
        boolean isAdmin = false;
        try{
        String loggedInUser = request.getHeader("sm_user").trim();
         isAdmin = getUserAdminRights(request);
            String emailSubject = emailInfo.getEmailSubject();
            String emailMsg  = emailInfo.getEmailMsg();
--
----

域名: -

    public class EmailReqInfo implements Serializable
    {

        private static final long serialVersionUID = 1L;
        private String emailSubject;
        private String emailMsg;

//getters and setters
    }