2016-06-24 2 views
0

Я пытаюсь реализовать вызов ajax с помощью jquery.when я отправляю вызов, он бросает 400 Bad Request .. Не уверен, где я делаю неправильно в моем ajax call..Need помощь в установлении этого ..Ajax post call to controller get 400 (Bad Request)

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 hrs..help необходимо. спасибо ..

ответ

0

DonT stringify данные

Изменить

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

to 

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

Привет, Piyush, я попробовал, не стягивая данные. Но не повезло ... получить то же исключение..ни мысли .. –

1

Вам нужно в кавычки данных keys. Изменить emailSubject: emailSub,emailMsg : emailBody на "emailSubject" : emailSub, "emailMsg" : emailBody.

Вам также не хватает закрытия } в самом конце вашего submitHandler, может ли быть только ошибка с пастой?

+0

@mike ... Я действительно пытался с добавлением котировок к ключам .. но не повезло. .получаю ту же ошибку..ани мысли .. ?? –

+0

Да .. впечатывает ошибку в вопросе .. теперь его сейчас. –

+0

В вашем devtools вы можете видеть, что оба значения установлены правильно при отправке вашего запроса AJAX? – pmahomme

0

я сделал изменения в моем AJAX вызова и контроллер, который в настоящее время пользователь @RequestBody и теперь он работает отлично ...

мой Аякса код:

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 
    }