23.05.2010, 12:11
|
|
猫
|
|
Регистрация: 07.06.2007
Сообщений: 7,504
|
|
Сообщение от micscr
|
Суть не меняется - переделывать в 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
|
А если надо просто куски html подгружать - xml.
|
а ещё проще html
|
|
23.05.2010, 13:22
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от micscr
|
например в строковых значениях должны отсутствовать символы перевода строк
|
Чё за бред? Если у вас есть строка JSON, то там нет переводов строк (не экранированных), если там есть переводы строк -- это не JSON. Также можно сказать, что у XML есть свои трудности, например, & надо экранировать.
|
|
23.05.2010, 15:06
|
|
Профессор
|
|
Регистрация: 10.09.2009
Сообщений: 1,577
|
|
Может мы о разном говорим?
Имею обработчик 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.) не выходит. Или что делаю не так?
|
|
23.05.2010, 16:45
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от micscr
|
07 // передаю json - экранирую
08 echo 'var x = "' . str_replace("\r\n" , "\\\r\n" , $str) . '";';
|
Это не json. Вот json
json_encode($str);
А вы просто слэши в конце каждой строки поставили.
|
|
23.05.2010, 17:23
|
|
Профессор
|
|
Регистрация: 10.09.2009
Сообщений: 1,577
|
|
спс, буду знать.
|
|
24.05.2010, 01:47
|
|
Модератор Всея Форума
|
|
Регистрация: 14.05.2009
Сообщений: 4,021
|
|
Если использование XSLT упростит задачу, то конечно лучше XML, например подгрузка дерева. В общем всё от ситуации зависит.
|
|
28.05.2010, 22:20
|
|
NodeJS developer - ушел
|
|
Регистрация: 06.01.2010
Сообщений: 1,022
|
|
Пробовал загружать данные в 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 не работает.
Последний раз редактировалось mycoding, 28.05.2010 в 22:33.
|
|
28.05.2010, 22:32
|
|
|
Регистрация: 10.07.2008
Сообщений: 3,873
|
|
Сообщение от 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);
Последний раз редактировалось Octane, 28.05.2010 в 22:38.
|
|
28.05.2010, 22:36
|
|
NodeJS developer - ушел
|
|
Регистрация: 06.01.2010
Сообщений: 1,022
|
|
Всё заработало, огромное спасибо.
|
|
28.05.2010, 23:52
|
|
Модератор Всея Форума
|
|
Регистрация: 14.05.2009
Сообщений: 4,021
|
|
Сообщение от Kolyaj
|
Чё за бред?
|
Это не бред.
Сообщение от Kolyaj
|
то там нет переводов строк (не экранированных)
|
Бред.
Сообщение от Kolyaj
|
если там есть переводы строк -- это не JSON
|
Да, но опять же если на клиент всё поступает в виде JSON - как быть? "\n" не помогают.
|
|
|
|