這真是個讓人特别抓心找撓肝的問題,真的差點被這個問題逼的放棄去使用json作為傳回類型,而是去用html,但是有的時候就是要較汁一下。(即便現在問題解決了,我還是想說句“媽蛋”,來發洩一下)
其實主要還是自己對json的不夠了解,但是很納悶,網上對路的解決方法幾乎沒有。是以雖然問題很小,但是還是想要分享出來,希望能幫到需要的人。
首先$.post()格式如下:
1
<code>$.post(url,data,success(data, textStatus, jqXHR),dataType)</code>
參數描述
url
必需。規定把請求發送到哪個 URL。
data
可選。映射或字元串值。基本是json格式。
success(data, textStatus, jqXHR)
可選。請求成功時執行的回調函數。
dataType
可選。規定預期的伺服器響應的資料類型。預設執行智能判斷(xml、json、script 或 html)。
示例:
2
3
4
5
6
7
8
<code> </code><code>$.post(</code><code>"../../xxx/ajaxPost.aspx"</code><code>,</code>
<code> </code><code>{</code>
<code> </code><code>action: </code><code>"xxx"</code><code>,</code>
<code> </code><code>id: xxx</code>
<code> </code><code>},</code><code>function</code> <code>(data,status) {</code>
<code> </code><code>alert(</code><code>"name="</code><code>+data.name+</code><code>",age="</code><code>+data.age);</code>
<code> </code><code>},</code>
<code> </code><code>"json"</code><code>);</code>
打斷點可以正常進入到背景。直到想要的操作完成,組成新的json資料,利用Response.Write()傳回,但是無論如何也不走function()方法,之前有想到是json格式的問題,但是改了還是不行。
後來終于終于
背景:
<code> </code><code>result = </code><code>"{\"name\":\"Michael Jordan\",\"age\":\"51\"}"</code><code>;</code>
<code> </code><code>Response.Write(result);</code>
<code> </code><code>Response.End();</code>
大家注意,都知道json的格式是{"key1”: "value1”, "key2”: "value2”} 這樣(或者是把{}中的雙引号變成單引号),但是在C#代碼部分卻是需要在引号(“”)前加上轉義字元(\)的,否則永遠走不到回調方法。
$.post()方法在以json作為傳回類型的時候,是嚴格要求使用json格式才可以進入回調的。是以……
運作截圖:
<a href="http://s3.51cto.com/wyfs02/M00/49/A7/wKiom1QX7aPzY_pEAABX7owqAEY157.jpg" target="_blank"></a>
本文轉自 我不會抽煙 51CTO部落格,原文連結:http://blog.51cto.com/zhouhongyu1989/1553324,如需轉載請自行聯系原作者