2011-07-14 145 views
3

這是腳本:爲什麼我得到[對象對象]而不是JSON?

$("#some_button").click(function() { 

    var changed = []; 

    $('input[id$="_1"]').each(function() { 

     var new_id = this.id.replace('_1', '_0'); 

     if ($(this).val() !== $('input#' + new_id).val()) { 

      changed.push({id:new_id, new_val:$('input#' + new_id).val(), old_val:$(this).val()}); 

     } 

    }); 

    alert(changed); 

}); 

,它是給我[object Object],[object Object]

我在做什麼錯?

回答

5

,以取代alert線,因爲你沒有JSON。你有一個數組:[]。 JSON是一個javascript對象的字符串表示。

你可以使用JSON.stringify方法來生成從現有對象JSON字符串:

alert(JSON.stringify(changed)); 

JSON.stringify方法是在現代瀏覽器本地,但如果你需要支持舊版瀏覽器,你將需要包括json2.js到你的頁面。該腳本檢查瀏覽器是否支持本地JSON.stringify並使用它,或者它不提供示例實現。

+0

這個工作在IE7上嗎?在IE8上看起來很好。 – nami

+0

@nami,不,你必須從這裏包含'json2.js':http://www.json.org/js.html。 'JSON.stringify'方法在現代瀏覽器中是原生的,但傳統瀏覽器不支持它。 –

2

JSON是顯示/編碼JavaScript對象的一種方式,但默認情況下不使用。當你將一個對象轉換爲一個字符串時,你通常會得到一個無用的值,如"[object Object]"

如果要將對象轉換爲JSON字符串,則需要使用JSON.stringify函數。 (這是包含在新的瀏覽器,但需要JSON library在舊的。)

在你的情況,你可能想用

alert(JSON.stringify(changed)); 
+0

jQuery有一個內置的json.stringifier嗎? – nami

+1

@nami不,它沒有。 jQuery開發人員建議您使用json.org的庫[json2.js](https://raw.github.com/douglascrockford/JSON-js/master/json2.js)。 –

+1

@nami據我所知,對於在新舊瀏覽器中工作的庫,請從[JSON-js](https://github.com/douglascrockford/JSON-js)中嘗試json2.js。 –

相關問題