【问题标题】:Ajax Jquery Post call getting into 400 (Bad Request)Ajax Jquery Post 调用进入 400(错误请求)
【发布时间】:2016-06-24 03:09:40
【问题描述】:

我正在尝试使用 jquery 实现 ajax 调用。当我提交调用时,它会抛出 400 Bad Request..不确定我在 ajax 调用中哪里做错了..需要帮助来解决这个问题..

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);
                }
                }
       });
    }

我的控制器代码:

 @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;
    }

干杯,伙计们...

【问题讨论】:

  • 您要发布到的服务器正在响应 400,因此如果没有看到 /web/utilities/sendEmailMessage 在做什么,我们无法回答您的问题。
  • @Barrett,我添加了控制器代码......请让我知道我做错了什么......
  • 无需字符串化使用此数据:{emailSubject : emailSub,emailMsg : emailBody}

标签: javascript jquery ajax


【解决方案1】:

很简单

submitHandler:function(form){

        if(confirm("You are about to send Email Communication, Are you sure..?")){
        $.ajax({
            type: "POST",
            url:  $("#applicationUrl").val() +"/web/utilities/sendEmailMessage",            
            data:$(form).serializeArray(), 
            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);
                }
                }
       });
    }

【讨论】:

  • 它对我没有帮助 Sonu,我仍然遇到同样的错误。顺便说一句,我的表单数据元素如何与我的控制器方法参数绑定,仅指定 $(form).serializeArray() ..?感谢您的调查..
【解决方案2】:
var strResponse=$.ajax({ type: "POST", url:  $("#applicationUrl").val() +"/web/utilities/sendEmailMessage",
 data: JSON.stringify({emailSubject : emailSub,emailMsg : emailBody}), async: false, 
 contentType: "application/json; 
 charset=utf-8", dataType: "json" });
 if (strResponse.readyState == 4 && strResponse.status == 200)
            return ((strResponse.responseText.indexOf("d") >= 0) ? eval('(' + strResponse.responseText + ')').d : strResponse.responseText);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多