典型症狀
- 點擊登錄按鈕變灰,無彈窗,無網絡錯誤提示。
- JS 斷點進入
if 判斷,但 Ajax 成功/失敗回調均不執行。
核心問題
- 取值方式錯誤:
$("#txtName").attr("value") 只獲取初始 HTML 屬性,應用 .val() 獲取用戶輸入的當前值。
- 缺失 error 回調:導致服務端返回非 JSON 或 HTTP 錯誤時靜默失敗。
- JSON 格式不合法:服務端返回單引號包裹的字符串(如
{'flag':1}),dataType: "json" 要求雙引號({"flag":1})。
修正代碼
$.ajax({
type: "post",
url: "Login.asmx/UserLogin",
data: JSON.stringify({
_name: $("#txtName").val(),
_pwd: $("#txtPwd").val(),
_validate: $("#txtValidate").val()
}),
contentType: "application/json;charset=utf-8",
dataType: "json",
success: function (data) {
if (data.flag === 1) alert("登錄成功");
else alert("失敗:" + data.msg);
},
error: function (xhr) {
console.error(xhr.responseText); // 關鍵:輸出服務端原始響應
alert("系統錯誤:" + xhr.status);
}
});
服務端返回示例
// C# 匿名對象自動序列化為合法 JSON
return new { flag = 1, msg = "OK" };
// 禁止手動拼接字符串:return "{'flag':1}";