2013-10-02 3 views
0

Мне интересно, можно ли хранить данные из переменных в json-файл?Сохранить переменную javascript в файле JSON

var json_object = {"test":"Hello"} 
    $.ajax({ 
      url: "save.php", 
      data: json_object, 
      dataType: 'json', 
      type: 'POST', 
    success: function (json_object) { 
     console.log(json_object); 
     $("#data").text("Data has been saved.");}, 
    error: function (json_object){ 
     console.log(json_object); 
     $("#data").text("Failed to save data !");} 

Это то, что я использую, чтобы сохранить данные, теперь вместо того, чтобы хранить Hello в виде строки, я хотел бы Helloworld быть переменной, например

var hello = world; 
+0

Вы можете это сделать, но это не будет JSON. Это также очень похоже на [проблема XY] (http://meta.stackexchange.com/a/66378/169187) --- что вы хотите сделать с этим? – JJJ

+0

Я создаю мини-игру в javascript, и мне показалось, что мне нужно использовать json для сохранения данных, как я могу сохранить эти данные вместо этого? – Skugga

+1

Не используйте глобальные переменные. Поместите все игровые данные в объект, и вы можете просто передать этот объект вокруг как есть. – JJJ

ответ

3

Прежде всего создать пространство имен для вашей игры , например Game:

var Game = {}; 

С этого момента, все переменные, которые имеют отношение к вашей игре идти. Это должно свести к минимуму использование глобального масштаба (что является злом).

Тогда скажите, что вы хотите иметь состояние с score и level. Вы делаете это так:

Game.state = { 
    score: 0, 
    level: 1 
} 

Во время игры он может быть модифицирован, например:

Game.state.score = 42; 
Game.state.level++; 

Чтобы сохранить его, отправить запрос Ajax:

$.ajax({ 
     url: "save.php", 
     data: { 
      state: JSON.stringify(Game.state) // sending Game.state as JSON string 
     }, 
     dataType: 'json', 
     type: 'POST', 
     success: function (json_object) { 
      console.log(json_object); 
      $("#data").text("Data has been saved."); 
     }, 
     error: function (json_object) { 
      console.log(json_object); 
      $("#data").text("Failed to save data !"); 
     } 
    } 

JSON.stringify(Game.state) будет строка что выглядит следующим образом: '{"level":0,"score":42}'.

Хорошо, поэтому после сохранения вы храните отправленный объект JSON как String на своем сервере или что-то в этом роде, и в какой-то момент в будущем вы хотите его восстановить. Вы можете достичь этого:

$.ajax({ 
     url: "load.php", 
     data: "", // no data, we are just loading 
     dataType: 'json', 
     type: 'POST', 
     success: function (state) { 
      Game.state = state; // okay, state loaded and assigned to our Game.state! 
     } 
    } 
Смежные вопросы