Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   JSON или XML (https://javascript.ru/forum/misc/9532-json-ili-xml.html)

Gozar 23.05.2010 12:11

Цитата:

Сообщение от micscr (Сообщение 56192)
Суть не меняется - переделывать в js надо
var x = 'fff\
dffdf\
ffdfddf ';
var y = 'fff' + '\n' + 'dffdf' + '\n' + 'ffdfddf ';
alert(x == y);

суть разная, отсутствовать ≠ экранировать. Пример этот вообще к чему?
var x = 'fff\
dffdf\
ffdfddf ';
var y = 'fff' + '\n' + 'dffdf' + '\n' + 'ffdfddf ';
alert([x,y]);

Цитата:

Сообщение от micscr (Сообщение 56192)
А если надо просто куски html подгружать - xml.

а ещё проще html

Kolyaj 23.05.2010 13:22

Цитата:

Сообщение от micscr
например в строковых значениях должны отсутствовать символы перевода строк

Чё за бред? Если у вас есть строка JSON, то там нет переводов строк (не экранированных), если там есть переводы строк -- это не JSON. Также можно сказать, что у XML есть свои трудности, например, & надо экранировать.

micscr 23.05.2010 15:06

Может мы о разном говорим?
Имею обработчик ajax-запроса:
$str = "Каждая
в своей
строке";
if (isset($_POST['how'])) {
	$how = $_POST['how'];
	if ($how == 'json') {
          // передаю json - экранирую
	  echo 'var x = "' . str_replace("\r\n" , "\\\r\n" , $str) . '";';
	} else {
          // передаю html
          echo '<div>' . $str . '</div>';
    }
}


В textarea мне надо получить этот текст (состоящий из 3-х строк)

Вот запрос на html:
function whatdo()
{
    // действия
  $.post('./listener.php' , {how : 'html'}, function(data){
	var txt = $(data).text();
	$('textarea').val(txt); // получим как в php было - три строки
  });
}

- все ОК.

Вот запрос на json:
function whatdo2()
{
    // действия
  $.post('./listener.php' , {how : 'json'}, function(data){
	try {
	  eval(data);
	  $('textarea').val(x); // получим все в одну строку
	} catch(e) {
	  alert('ошибка');
	} 

  });
}

- отрабатывает без ошибки, но результат в textarea - одна слитая строка, а не три. Т.е. по простому сделать(как вариант 1.) не выходит. Или что делаю не так?

Kolyaj 23.05.2010 16:45

Цитата:

Сообщение от micscr
07 // передаю json - экранирую
08 echo 'var x = "' . str_replace("\r\n" , "\\\r\n" , $str) . '";';

Это не json. Вот json
json_encode($str);
А вы просто слэши в конце каждой строки поставили.

micscr 23.05.2010 17:23

спс, буду знать.

B~Vladi 24.05.2010 01:47

Если использование XSLT упростит задачу, то конечно лучше XML, например подгрузка дерева. В общем всё от ситуации зависит.

mycoding 28.05.2010 22:20

Пробовал загружать данные в json с сайта, они приходят в виде строки.
Сделал myjson = eval(json);
Выдаёт :
Ошибка: invalid label
Исходный код:
{subject:"tfkp",title:"Сборник задач по теории функции комплексного переменного",author:"Волковынс кий, Лунц, Араманович",yearOfPublish:"2006"}

JSON :
{subject:"tfkp",title:"Сборник задач по теории функции комплексного переменного",author:"Волковынс кий, Лунц, Араманович",yearOfPublish:"2006"}

Пробовал и myjson = eval('('+json+')');

Просто я первый раз json загружаю с сайта, раньше html уже готовый загружал.
А теперь появилась необходимость в JSON и что-то не разбирусь.
НУ вроде получилось запустить myjson = eval('('+json+')');
НО как теперь к свойствам обратится ? ЧТо то
myjson.title не работает.

Octane 28.05.2010 22:32

Цитата:

Сообщение от mycoding
Пробовал и myjson = eval('('+json+')');

Ну и все работает:
alert(eval('({subject:"tfkp",title:"Сборник задач по теории функции комплексного еременного",author:"Волковынс кий, Лунц, Араманович",yearOfPublish:"2006"})').subject);


Цитата:

Сообщение от mycoding
JSON :
{subject:"tfkp",title:"Сборник задач по теории функции комплексного переменного",author:"Волковынс кий, Лунц, Араманович",yearOfPublish:"2006"}

Это не JSON. Вот JSON:
alert(JSON.stringify({subject:"tfkp",title:"Сборник задач по теории функции комплексного переменного",author:"Волковынс кий, Лунц, Араманович",yearOfPublish:"2006"}));


И в современных браузерах есть специальный метод JSON.parse:
alert(JSON.parse('{"subject":"tfkp","title":"Сборник задач по теории функции комплексного переменного","author":"Волковынс кий, Лунц, Араманович","yearOfPublish":"2006"}').subject);

mycoding 28.05.2010 22:36

Всё заработало, огромное спасибо.

B~Vladi 28.05.2010 23:52

Цитата:

Сообщение от Kolyaj
Чё за бред?

Это не бред.
Цитата:

Сообщение от Kolyaj
то там нет переводов строк (не экранированных)

Бред.
Цитата:

Сообщение от Kolyaj
если там есть переводы строк -- это не JSON

Да, но опять же если на клиент всё поступает в виде JSON - как быть? "\n" не помогают.


Часовой пояс GMT +3, время: 02:48.