2012-01-06 97 views
0

我有以下的JavaScript代碼:警報(data.status)時失敗狀態=假,但不是在狀態=真

alert(data.status); 

data是一個JSON對象,它的領域之一是status(布爾場)。

JSON.stringify(data)回報:

{"result":[{"income":"1000","expense":"2000"}],"errors":{},"status":true}

上面的代碼不會輸出true,但是當JSON.stringify(data)回報:

{"result":null,"errors":{"user":"nonexistent user"},"status":false}

上述斷碼 - 即它不提醒什麼,而其餘的JavaScript代碼也不會執行。

任何想法爲什麼,和/或如何修復/繞過它?

+0

我相信你可能在結果中的「狀態」屬性和響應本身的「狀態」之間有衝突。 – 2012-01-06 19:58:22

+1

沒有一定的背景下就說不出來。一個周圍的功能也許。重現問題的測試用例(AJAX元素幾乎可以完全從這個問題中抽象出來)。 – 2012-01-06 20:00:30

+0

如果您使用此警報進行調試,最好使用'console.log(status);' – nincha 2012-01-06 19:59:25

回答

3

你的錯誤在別處。試試這個簡單的測試在Firebug(或其他控制檯):

var data = JSON.parse(
     '{"result":null,"errors":{"user":"nonexistent user"},"status":false}') 
alert(data.status); 

它工作正常。

+2

+1:OP應該編寫的測試用例並用於在發佈之前得出_this_問題沒有任何價值的結論它。換句話說,基本的調試。 \ *打哈欠\ * – 2012-01-06 20:01:18

+0

@lwburk你是對的。我的錯誤是嘗試在'alert(data.status);'通過'data.result'之前迭代'$ .each(data.result,function(i,user){...}'。如果'status'是錯誤的,它會實際**失敗,試圖通過null迭代。在這個Firebug給了我一個關於jquery.js文件中的錯誤的消息。如果我已經被提醒訪問空引用在我的代碼。如果有人知道正確的方式來調試這樣的錯誤,並願意分享 - 它將不勝感激! – rapt 2012-01-06 20:51:32