亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何解決ajax成功中的“數據未定義”問題?

如何解決ajax成功中的“數據未定義”問題?

精慕HU 2021-06-27 13:15:54
我有一個 JSP 頁面,其中我有一個按鈕 onclick,我正在調用一個名為“sendmail()”的 Ajax 方法。發送郵件 API 寫在控制器中。我試圖在 Ajax 成功中顯示一條警報消息使用 data.message 并表示數據未定義。我嘗試將控制器中的響應對象設置為成功,并將其作為字符串返回。注意:要做到這一點,我必須將我的控制器 sendmail 方法更改為 String 返回類型。所以我觀察到在這種情況下 Ajax 調用不會進入成功方法。當方法類型為 void 時它工作正常。當我在 chrome 開發人員的幫助下檢查,網絡調用返回 404(未找到)。郵件已成功發送,但 ajax 成功不起作用。這是我的按鈕和 Ajax 方法,<div class="uk-width-large-2-5">  <div class="uk-form-row">  <label>Message</label>  <textarea id="message" cols="30" rows="4" class="md-input"></textarea>  </div>  <div class="uk-form-row">  <button type="submit" class="md-btn md-btn-success md-btn-large" onclick="sendMail()">Send Message</button> </div> </div>阿賈克斯方法:<script>function sendMail() { var reqJson = {}; reqJson.msg = $("#message").val();$.ajax({type : "POST",url : "sendMail",data : JSON.stringify(reqJson),dataType: 'json',contentType: "application/json",  success : function(data) {      console.log("data :"+data.message);               } error: function() {}    });                                 }</script>主控制器.java @RequestMapping(value = "/sendMail", method = RequestMethod.POST, produces = "application/json")   public void sendContact(HttpServletRequest request, HttpServletResponse response, @RequestBody String payload) {        JSONObject jRespObj = new JSONObject();      try {        System.out.println("Welcome");        JSONObject jPayload = new JSONObject(payload);         System.out.println("jobj : "+jPayload);         String message = jPayload.getString("msg");         InputStream inputStream = UserController.class.getResourceAsStream("/Contactusrequest.htm");      StringWriter writer = new StringWriter();      try {          IOUtils.copy(inputStream, writer);         } catch (IOException e) {          e.printStackTrace();         }我想從控制器獲取響應對象到 Ajax 成功,以訪問 data.message。
查看完整描述

2 回答

?
幕布斯7119047

TA貢獻1794條經驗 獲得超8個贊

解決方案 1.您正在返回響應,因此在 Ajax 中獲取數據是未定義錯誤。 使用 Gson 或 JSONObject 在正文中寫入 json 響應,而不是返回。


例如。


//Write the json response in body

  //return jRespObj.toString();

  response.getWriter().write(jRespObj.toString());

解決方案 2 - 刪除所有其他 System.out.println 語句并在 json 中顯示單個響應。


System.out.print(jRespObj.toString());

在 ajax 中,你可以得到類似的響應


$ajax({

----

success : function(data) {    

  console.log("data :"+data['message']);

},

 error: function()

 {

}


查看完整回答
反對 回復 2021-07-01
  • 2 回答
  • 0 關注
  • 960 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號