1. 程式人生 > 實用技巧 >JQuery Ajax 傳送請求成功後卻接收不到任何響應資料問題

JQuery Ajax 傳送請求成功後卻接收不到任何響應資料問題

問題描述

使用 JQuery Ajax 向後端伺服器傳送請求,伺服器也收到請求返回了響應資料,但是 Ajax 卻收不到任何響應資料。

舉例如下:

$.ajax({   
  type: "post",   
  url: "test",    
  data: {name: "張三"}, 
  dataType: "json", 
  success: function(data) {   
    alert("正確");
  },

  error: function(err) {  
    alert("錯誤");   
  }
});

以上程式碼中,伺服器正常響應 Ajax 請求,但客戶端中正確和錯誤視窗都沒有彈出。

原因分析

問題原因在於伺服器返回的響應資料其實並非 json 格式,而在 ajax 中指定了 dataType: "json", 導致無法解析響應的資料。

為何會如此呢?

原因如果伺服器響應的資料本身就是一個 Stgring 字串型別,就不會解析為 json 串,而是直接就是 text 文字型別傳送給客戶端。

解決方法

將 json 改為 text,修改後的程式碼如下:

$.ajax({   
  type: "post",   
  url: "test",    
  data: {name: "張三"}, 
  dataType: "text", 
  success: function(data) {   
    alert("正確");
  },

  error: function(err) {  
    alert("錯誤");   
  }
});

所以,這裡 dataType:"text" 就是將響應資料設定為 text 型別。