2010-05-23 3 views
1

Я хочу преобразовать объекты тега html в объект json в javascript, чтобы отправить их на сервер из javascript. Поскольку я должен сохранять эти объекты на сервере Ruby on Rails. Этими объектами HTML являются объект тега canvas и графические объекты, созданные с использованием API CAKE. Я использовал функцию 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

У вас есть страница с примером? Вы включили [json2.js] (http://www.json.org/js.html) в свой HTML? Какая ошибка? –

+0

@Marcel: нет примера страницы. Функция stringify не работает. Он преобразует его в объект json. Нет, я не включил json2, js – cooldude

+0

Но какова ошибка? Если 'JSON.stringify' не определен где-либо (например, в json2.js или реализации собственного браузера), это не сработает. –

ответ

1

Только примитивные значения (строки, даты, логические, число) и объекты и структура массивов можно сериализовать в формат JSON. Это означает, что другие хост-объекты, такие как RegExp или Canvas, не могут быть сериализованы.

Короче говоря, JSON ограничивается данными ('информация').

Таким образом, вам либо необходимо сохранить созданную разметку, используя .innerHTML, либо сохранить данные, чтобы их можно было воссоздать.

+0

@Sean: Могу ли я напрямую отправлять объекты javascript на сервер. если это тогда как. – cooldude

+1

Нет, вам нужно передать его, используя формат, общий для среды программирования на стороне клиента и на стороне сервера. На данный момент это JSON. См. Json.org для описания того, что такое JSON. –

+0

@cooldude: Но, как уже сказал Шон, вы не можете «стягивать» что-либо еще, кроме данных (так, а не функций или элементов HTML). –

Смежные вопросы