2017-04-05 72 views
0

在下面的代碼中,我正在做一個ajax調用並調用一個控制器'/ feedback',並且從控制器中,我返回字符串值爲「Y」。但每次它都會將我重定向到錯誤的Jsp。Ajax調用沒有從控制器返回成功

任何幫助,將不勝感激。

Ajax調用:

document.getElementById("modal_feedback").addEventListener("submit", function(e) { 
     var form = this; 
     var name = form.name.value; 
     var rating = form.overall.value; 
     var msg = form.message.value; 
     if(name == "") { 
      alert("Please enter your Name"); 
     form.name.focus(); 
     e.preventDefault(); 
     } else if(rating == "") { 
      alert("Please select a rating"); 
     form.overall[0].focus(); 
     e.preventDefault(); 
      } else if(msg == "") { 
      alert("Please enter your comment in the Message box"); 
      form.message.focus(); 
     e.preventDefault(); 
     } 
     $.ajax({ 
      type: "POST", 
      url: "feedbackData.htm?ratingId="+rating+"&msg="+msg, 
      success: function(response) { 
     console.debug(response); 
     if(response == 'Y'){ 
     $('#contact_form').html("<div id='message'></div>"); 
     $('#message').html("<h2>Contact Form Submitted!</h2>") 
     .append("<p>We will be in touch soon.</p>") 
     .hide() 
     .fadeIn(1500, function() { 
      $('#message').append("<img id='checkmark' src='images/icon_pdf.png' />"); 
      }); 
    } 
    } 
    }); 
    return false; 

}, false); 

控制器代碼:

@RequestMapping(value = "/feedbackData") 
    public @ResponseBody String getFeedbackData(String ratingId, String msg) throws UnsupportedEncodingException{ 
     System.out.println("Inside FeedbackController.."); 
     try{ 
      feedbackService.updateFeedback(ratingId,msg); 
      return "Y"; 
     }catch(Exception e) 
     { 
      logger.error("Exception in Login :" + e); 
      return "N"; 
     } 
    } 
} 
+0

您正在使用POST方法並在url中發送屬性,這是錯誤的,以及爲什麼您使用feedbackdata.html而不是feedbackdata。 – mustafa918

回答

0

嘗試通過增加dataType : "html"所以更新你的Ajax代碼,它接受響應,串象下面這樣:

$.ajax({ 
    type: "GET", 
    url: "feedbackData.htm?ratingId="+rating+"&msg="+msg, 
    dataType: "html", 
    success: function(response) { 
     console.debug(response); 
     if(response == 'Y'){ 
      $('#contact_form').html("<div id='message'></div>"); 
      $('#message').html("<h2>Contact Form Submitted!</h2>") 
      .append("<p>We will be in touch soon.</p>") 
      .hide() 
      .fadeIn(1500, function() { 
       $('#message').append("<img id='checkmark' src='images/icon_pdf.png' />"); 
      }); 
     } 
    } 
}); 

而且請閱讀jquery ajax官方文檔以獲取更多說明here

+0

您可以將此答案標記爲有用,如果它對您有用,以便它可以幫助其他面臨同樣問題的人。謝謝 –

+0

我試過你的建議,但沒有奏效。我仍然面臨同樣的問題。 – MSV

+0

在'success'函數下嘗試'console.log(response)',並在這裏發送你的迴應。 –

1

我已經嘗試過數據類型:「html」,它開始返回響應並且沒有進入error.jsp。更新的JS代碼如下

 document.getElementById("modal_feedback").addEventListener("submit", function(e) { 
     e.preventDefault(); 
     var form = this; 
     var name = form.name.value; 
     var rating = form.overall.value; 
     var msg = form.message.value; 
      if(name == "") { 
      alert("Please enter your Name"); 
      form.name.focus(); 
      e.preventDefault(); 
      } else if(rating == "") { 
     alert("Please select a rating"); 
     form.overall[0].focus(); 
     e.preventDefault(); 
     } else if(msg == "") { 
     alert("Please enter your comment in the Message box"); 
     form.message.focus(); 
     e.preventDefault(); 
    } 
    $.ajax({ 
    type: "POST", 
    url: "feedbackData.htm?ratingId="+rating+"&msg="+msg, 
    async : false, 
    dataType: "html", 
    success: function(response) { 
     console.debug(response); 
     if(response == 'Y'){ 
     $('#modal_window').html("<div id='message'></div>"); 
     $('#message').html("<h2>Feedback Form Submitted!</h2>").append("<p>We will be in touch soon.</p>") 
     } 
    }, 
    error : function(e) { 
     alert('Error: ' + e); 
    } 
    }); 
    return false; 
});