这是剧本:
$("#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]
。
我做错了什么?
答案 0 :(得分:8)
因为你没有JSON。你有一个数组:[]
。 JSON是javascript对象的字符串表示。
您可以使用JSON.stringify
方法从现有对象生成JSON字符串:
alert(JSON.stringify(changed));
JSON.stringify
方法在现代浏览器中是原生的,但如果您需要支持旧版浏览器,则需要在页面中加入json2.js。此脚本检查浏览器是否支持本机JSON.stringify
并使用它,如果不支持,则提供示例实现。
答案 1 :(得分:2)
JSON是显示/编码JavaScript对象的一种方法,但默认情况下不使用它。当您将对象转换为字符串时,通常只会得到像"[object Object]"
这样无用的值。
如果要将对象转换为JSON字符串,则需要使用JSON.stringify
函数。 (这包含在新浏览器中,但在较旧的浏览器中需要JSON library。)
在您的情况下,您可能希望将alert
行替换为
alert(JSON.stringify(changed));