jQuery $.post()返回類型爲json時不進入回調函數的原因及解決方法

這真是個讓人特別抓心找撓肝的問題,真的差點被這個問題逼的放棄去使用json作爲返回類型,而是去用html,但是有的時候就是要較汁一下。(即便現在問題解決了,我還是想說句“媽蛋”,來發泄一下)

其實主要還是自己對json的不夠了解,但是很納悶,網上對路的解決方法幾乎沒有。所以雖然問題很小,但是還是想要分享出來,希望能幫到需要的人。

首先$.post()格式如下:

$.post(url,data,success(data, textStatus, jqXHR),dataType)

參數描述

url
必需。規定把請求發送到哪個 URL。

data  
可選。映射或字符串值。基本是json格式。

success(data, textStatus, jqXHR)      
可選。請求成功時執行的回調函數。

dataType

可選。規定預期的服務器響應的數據類型。默認執行智能判斷(xml、json、script 或 html)。

示例:

                $.post("../../xxx/ajaxPost.aspx",
                    {
                        action: "xxx",
                        id: xxx
                    },function (data,status) {
                        alert("name="+data.name+",age="+data.age);
                    },
		    "json");

打斷點可以正常進入到後臺。直到想要的操作完成,組成新的json數據,利用Response.Write()返回,但是無論如何也不走function()方法,之前有想到是json格式的問題,但是改了還是不行。

後來終於終於

後臺:

            result = "{\"name\":\"Michael Jordan\",\"age\":\"51\"}";
            Response.Write(result);
            Response.End();

大家注意,都知道json的格式是{"key1”: "value1”, "key2”: "value2”} 這樣(或者是把{}中的雙引號變成單引號),但是在C#代碼部分卻是需要在引號(“”)前加上轉義字符(\)的,否則永遠走不到回調方法。

$.post()方法在以json作爲返回類型的時候,是嚴格要求使用json格式纔可以進入回調的。所以……

運行截圖:

wKiom1QX7aPzY_pEAABX7owqAEY157.jpg

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章