ajax中使用json傳遞數據時,其它數據類型都不是問題,但是如果服務器端生成的JSON中有bool類型的數據時,到客戶端解析時出現了小小的問題,總結如下:
服務器返回的JSON為:
復制代碼 代碼如下:
{"TypeID":[1037],"Title":"河北軟件職業技術學院","Intro":"","IsLink":"false","LinkUrl":"http://www.hbsi.edu.cn","IsPic":"true","Picture":"/newsimages/hbsi.jpg","Content":"<p><br></p>"}
其中屬性:IsLink和IsPic都是bool類型,在客戶端使用方法:
復制代碼 代碼如下:
document.getElementById("checkbox1").checked = news.IsLink;
會選中復選框,但是IsLInk為false,本不應該選中,為什麼呢?
查其原因,javascript 有三種基本數據類型(字符串string、數值number、布爾boolean ),兩種引用數據類型(對象Object、數組Array)和兩種特殊數據類型(Null 、Undefined )。其它類型向bool類型轉換時的有如下原則:
數據類型 轉換為bool後的值
null FALSE
undefined FALSE
Object TRUE
function TRUE
0 FALSE
1 TRUE
0、1之外的數字 TRUE
字符串 TRUE
""(空字符串) FALSE
此時,IsLink在JSON中為字符串“false”,所以轉換後得到bool類型true。
處理辦法:
復制代碼 代碼如下:
document.getElementById("checkbox1").checked = news.IsLink==“true";