2010-05-23 132 views
1

我想HTML标记对象的JSON对象转换的JavaScript才能把它们发送到从JavaScript的服务器。因为我必须将这些对象保存在Ruby on Rails服务器上。这些HTML对象是canvas标签对象和使用CAKE API创建的图形对象。我已经使用了stringify功能,但它不起作用。 这是我的代码:转换HTML Tag对象,以JSON对象

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 
} 
+0

你有一个示例页面?你在HTML中包含了[json2.js](http://www.json.org/js.html)吗?什么是错误? – 2010-05-23 11:37:10

+0

@Marcel:没有示例页面。 stringify功能不起作用。它将其转换为json对象。不,我没有包含json2,js – cooldude 2010-05-23 11:48:06

+0

但错误是什么?如果'JSON.stringify'没有在某处定义(例如,在json2.js或本地浏览器的实现中),它将不起作用。 – 2010-05-23 11:50:42

回答

1

只有原始值(字符串,日期,布尔值,数字)和对象和阵列结构是可能的,以序列化到JSON。这意味着像RegExp或Canvas等其他主机对象不能被序列化。

总之,JSON被限制为数据( '信息')。

所以,你将不得不保存使用.innerHTML创建的标记,或保存,以便它可以重新创建数据。

+0

@ Sean:我可以直接发送JavaScript对象到服务器。如果是那么如何。 – cooldude 2010-05-23 13:41:17

+1

不,您必须使用客户端和服务器端编程环境共有的格式来传递它。截至目前,这是JSON。 有关JSON是什么的描述,请参阅json.org。 – 2010-05-23 14:31:15

+0

@cooldude:但是,正如肖恩所说的,除了数据之外,你不能'串化'任何其他东西(所以不是函数或HTML元素)。 – 2010-05-23 14:48:16