2015-07-21 5 views
0

У меня есть веб-сайт, который, в свою очередь, имеет несколько страниц с богатым пользовательским опытом.Как передать данные с сервера на страницу

Для того, чтобы заполнить данные JavaScript, я визуализации "текст в HTML-страницы следующим образом:

<script> 
    var _data = [ 
      new BigDataObject(22022,{}), 
      new BigDataObject(30007, 
       { 
        "M":new ChildObject(25235,2,296), 
        "D":new ChildObject(25235,1,296), 
        "E":new ChildObject(25235,4,148) 
       }) 
      ]; 
    ... use _data object in JS functions 
</script> 

вещи работают хорошо.

Но мне также необходимо перенести данные с бэкэнд через обратные вызовы AJAX, предпочтительно используя те же «строки» для передачи данных. Проблема в том, что я не знаю, как правильно проанализировать объект обратно.

Проблема № 1: я мог бы передать струне точно так же и синтаксическую преобразовать их в объекты с помощью Eval(), но я слышал, что «Eval» использование небезопасно и его следует избегать ..

Проблемы # 2: Я не могу использовать JSON.parse, потому что строка, которую я написал выше, не является допустимой строкой JSON.

Чтобы решить эту проблему, я могу изменить способ генерации данных и использовать данные JSON вместо императивных инструкций.

Проблема №3: ​​ Но в этом случае мне нужно будет сделать свойства как BigDataObject, так и ChildObject общедоступными. Которых я бы хотел избежать.

Вопрос: Как реализовать передачу данных, так что я могу скрыть «сеттер» для свойств объектов и использовать «безопасный» подход

+0

Конструкторы этих объектов находятся на стороне клиента? –

+0

Да, конструкторы находятся в JavaScript как часть определения всего класса (если можно применить «класс» к функциям JavaScript – Budda

ответ

1

Я хотел бы сделать пользовательский объект для ответа, не используя ваш BigDataObject или ChildObject.

Таким образом, вы можете создать ответ, чтобы защитить свою фактическую модель, но в то же время создать надлежащий объект json, чтобы вы могли использовать функцию jQuery.parseJSON().

+0

Имеет смысл. Спасибо. – Budda

+0

@Budda, если вы считаете, что этот ответ решает вашу проблему, подумайте о ее маркировке как принятой. Для получения дополнительной информации: http://stackoverflow.com/help/accepted-answer – gonzalon

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