DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> jQuery Ajax Post 回調函數不執行問題的解決方法
jQuery Ajax Post 回調函數不執行問題的解決方法
編輯:關於JavaScript     

今天在寫一個檢查用戶名的功能時,使用的是jQuery.post( url, [data], [callback], [type] )這個函數,但是發現其中的回調函數不能執行。

先來看看我的代碼:

前台代碼:

<script type="text/javascript">
function checkUser() {
var user = $('#<%=txtUser.ClientID %>').val();
$.post('checkUser.ashx', { Action: "Check", Name: user },
function (data) {
alert(data);
},
"json");
}
</script>

後台代碼(checkUser.ashx):

public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "application/json";
string action = context.Request["Action"];
string user = context.Request["Name"];
string result = "{result: 0}";
switch (action)
{
case "Check":
if (us.isExists(user))
{
result = "{result: 1}";
}
break;
}
context.Response.Write(result);
}

但是怎麼也不執行回調函數中的alert(data)語句,經過單步跟蹤,最後發現是返回的Json字符串有問題。

原來jquery中規定返回的JSON字符串的KEY要用引號括起來,如{"result": 1}這樣才可以。

下面再看下jquery Ajax 不執行回調函數success的原因

jquery Ajax 不執行回調函數success的原因:

$.ajax({
type: "post",
contentType: "application/json",
url: basePath+"pages/Tongji/disposeAgree.action?cepingitem="+cepingitem+"&userrelation="+userrelation,
//data: {fenshu:8},
dataType: "json",
success: function (result) {
alert("操作成功");
},
error:function(response){
alert("error");
}
});

如上,因為設置了屬性dataType:"json",故如果後台返回的不是正確的JSON字符串,那麼永遠不執行回調函數success,而只執行error函數。要麼返回正確的JSON字符串,要麼把dataType屬性改為text

正確的返回JSON字符串如下:

pw.write("{\"name\":\"zs\"}");
pw.write("{\"name\":"+true+"}");

錯誤的例子:

pw.write("{‘name':‘zs'}");

以上所述是小編給大家介紹的jQuery Ajax Post 回調函數不執行問題的解決方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家的支持!

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved