問題描述
使用 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 類型。