JQuery Ajax 傳送請求成功後卻接收不到任何響應資料問題
阿新 • • 發佈:2020-10-28
問題描述
使用 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 型別。