将HTML TAG对象转换为JSON对象

时间:2010-05-23 11:16:28

标签: javascript html json

我想将jtml标记对象转换为javascript中的json对象,以便从javascript将它们发送到服务器。因为我必须在Ruby on Rails服务器上保存这些对象。这些HTML对象是canvas标记对象和使用CAKE API创建的图形对象。我使用了stringify函数,但它不起作用。 这是我的代码:

window.onload=function()
{
    var CAKECanvas = new Canvas(document.body, 1000,1000);
    var canvas=CAKECanvas.canvas;
    var text=document.createElement('textarea');
    text.id="text";
    text.rows="100";
    text.cols="200";
    document.body.appendChild(text);
    canvas.style.borderStyle="solid";
    canvas.style.borderColor="black";
var rect= new Circle();
    rect.radius=100;
    rect.centered=true;
    rect.cx=Math.random() * 500;
    rect.cy= Math.random() * 300;
    rect.stroke= false;
    rect.fill= "red";
    rect.xDir = Math.random() > 0.5?1:-1;
rect.yDir = Math.random() > 0.5?1:-1;
    var obj=new Object;
    var count = 0,k;
    for (k in rect)
        {
            if (rect.hasOwnProperty(k))
                {
                    count++;
                    obj[k]=rect[k];
                }
        }
    alert(count);
rect.addFrameListener(function(t, dt)
    {
                this.cx += this.xDir * 50 * dt/1000;
        this.cy += this.yDir * 50 * dt/1000;
        if (this.cx > 550)
        {
            this.xDir = -1;
        }
        if (this.cx < 50)
        {
            this.xDir = 1;
        }
        if (this.cy > 350)
        {
            this.yDir = -1;
        }
        if (this.cy < 50)
        {
            this.yDir = 1;
        }
    }
);

CAKECanvas.append(rect);
    var carAsJSON = JSON.stringify(obj); /////////////////NOT CONVERTING THE OBJECT OBJ     INTO JSON OBJECT
}

1 个答案:

答案 0 :(得分:1)

只有原始值(字符串,日期,布尔值,数字),对象和数组结构才能序列化为JSON。这意味着无法序列化其他主机对象(如RegExp或Canvas)。

简而言之,JSON仅限于数据('信息')。

因此,您必须使用.innerHTML保存创建的标记,或保存数据以便重新创建。