Я создаю массив с помощью jQuery, затем преобразую его в строку для сохранения в БД с помощью PHP через скрытый элемент ввода:
var dataObject = [];
dataObject.push({
text: text
});
var dataObjectString = JSON.stringify(dataObject);
$('#data').val(dataObjectString);
В PHP я преобразую его в Base64 перед сохранением в БД:
$args['data'] = isset($args['data']) ? base64_encode($args['data']) : '';
Для просмотра я декодирую его из Base64 и задаю строку:
$this->set('js_data', base64_decode($this->data));
В самом представлении я помещаю это в атрибут div и затем читаю его с помощью jQuery:
<div class="my_class" data-js="'<?php echo h($js_data); ?>'">
<script type="text/javascript" charset="UTF-8">
$(function(){
$.each($('.my_class[data-js]'), function(index, element){
var js_data = $(element).attr('data-js');
init(element, js_data);
});
function init(element, js_data) {
console.log(js_data);
};
});
</script>
Пока все хорошо, у меня есть строка, напечатанная в консоли.Но это всего лишь строка.Мне нужен объект json, чтобы прочитать мои начальные значения массива.Поэтому, если я сделаю
$.parseJSON($(element).attr('data-js'));
, он выдаст ошибку: «SyntaxError: JSON.parse: неожиданный символ в строке 1 столбца 1 данных JSON».Зачем?Как еще можно преобразовать строку в json?