转换HTML Tag对象,以JSON对象
我想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
}
只有原始值(字符串,日期,布尔值,数字)和对象和阵列结构是可能的,以序列化到JSON。这意味着像RegExp或Canvas等其他主机对象不能被序列化。
总之,JSON被限制为数据( '信息')。
所以,你将不得不保存使用.innerHTML创建的标记,或保存,以便它可以重新创建数据。
@ Sean:我可以直接发送JavaScript对象到服务器。如果是那么如何。 – cooldude 2010-05-23 13:41:17
不,您必须使用客户端和服务器端编程环境共有的格式来传递它。截至目前,这是JSON。 有关JSON是什么的描述,请参阅json.org。 – 2010-05-23 14:31:15
@cooldude:但是,正如肖恩所说的,除了数据之外,你不能'串化'任何其他东西(所以不是函数或HTML元素)。 – 2010-05-23 14:48:16
你有一个示例页面?你在HTML中包含了[json2.js](http://www.json.org/js.html)吗?什么是错误? – 2010-05-23 11:37:10
@Marcel:没有示例页面。 stringify功能不起作用。它将其转换为json对象。不,我没有包含json2,js – cooldude 2010-05-23 11:48:06
但错误是什么?如果'JSON.stringify'没有在某处定义(例如,在json2.js或本地浏览器的实现中),它将不起作用。 – 2010-05-23 11:50:42