powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
53 сообщений из 53, показаны все 3 страниц
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39536303
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть веб-приложение на Java, использует Spring MVC.
Клиент через
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
	$.ajax({
			type : 'GET',
			url : 'diagrams?id=' + id,
			dataType : 'json',
			headers : {
				Accept : "application/json; charset=utf-8",
				"Content-Type" : "application/json;  charset=utf-8"
			},

			success : function(result) {
				exe = "Highcharts.chart('container', {" + result.bodyText + "});";
				eval(exe);
			},
		});


запрашивает по id некий невалидный текст, который является частью Hightchart'от.
Пример строки:
Код: powershell
1.
2.
3.
4.
5.
6.
chart:{type:'column'},title:{text:'Сведения какие-то'},xAxis:{type:'category',labels:{rotation:-45,style:
{fontSize:'13px',fontFamily:'Verdana,sans-serif'}}},legend:{enabled:false},tooltip:{formatter:function(){return 'Количество животных:
 '+this.y+' '+this.series.options.abbreviation;}},yAxis:{min:0,title:null},series:[{name:'Количество кого-
то',scale:1000,precision:1,abbreviation:'тыс.',data:[['Январь 2015',6.2],['Февраль 2015',42.5],['Март 2015',46.],['Апрель 2015',47.4],
['Май 2015',4.1],['Июнь 2015',13.4],['Июль 2015',26.9],['Август 2015',192.7],['Сентябрь 2015',216.1],['Октябрь 2015',229.1],['Ноябрь
 2015',275.2],['Декабрь 2015',435.7]]},]


Естественно без переносов, сплошным текстом.
Я пробовал руками править его так, чтобы получить валидный JSON и тогда он отлично кладется на клиента формирует график как нужно. При этом можно при желании отдельно перед построением графика изменить что-то в данных.

Как видно из кода выше, я тупо прикрутил по краям куски кода, которые вместе образовали строку исполняя которую через eval() график и строится. Но! Почитал про eval, про его потенциальную опасность (пока не представляю как именно можно его использовать, но ведь пишут в интернетах :)). Да и при таком подходе не могу воздействовать на данные графика, менять и прочее.

А теперь вопросы, с учетом того, что на JS я пытаюсь писать примерно дней 5 и очень много не знаю:
1. Как можно помимо $ajax отправить на клиента запрос передав айди и получить от него данные? Не используя какие-то большие фреймворки, а простые популярные библиотеки типа jquery.
2. Как еще можно внедрить свой код внутрь метода так, чтобы строка выполнилась как код? Или лишь eval и всё тут?

Спасибо :)
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39536314
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixic,

Почитайте про JSON.
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39536324
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixic,

json разбирается при помощи JSON.parse()

результат передаётся параметром в Highcharts.chart без всякого eval
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39536334
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttNixic,
Почитайте про JSON.
Я понимаю что такое есть формат данных json и для чего он нужен, я понимаю, когда он валиден и когда нет, просто посмотрев на строку. Еще умею пользоваться онлайн валидаторами для него. И я же написал, что приводил его к нормальному/валидному виду. В данном случае вопрос немного в другом.
Что мне еще про json нужно прочитать? :)

ИзопропилNixic,
json разбирается при помощи JSON.parse()
результат передаётся параметром в Highcharts.chart без всякого eval
То что все везде может передаваться это понятно. Каким параметром и через что, какими механизмами? Я не прошу прямо код готовый с обоих сторон, на клиенте и на сервере, мне хотя бы названия/направления.
Вот по Java я почти все стандартные вещи знаю, а вот с JS не работал ранее, мне сложно ориентироваться в тех вещах, которые человеку с опытом в пару месяцев и более кажутся самими собой разумеющимися.
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39536335
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NixicЧто мне еще про json нужно прочитать? :)

Прочитайте хотя бы отличие JSON от JS, прежде чем натравливать на него eval.
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39536336
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NixicТо что все везде может передаваться это понятно. Каким параметром и через что, какими механизмами? Я не прошу прямо код готовый с обоих сторон, на клиенте и на сервере, мне хотя бы названия/направления.
Вот по Java я почти все стандартные вещи знаю, а вот с JS не работал ранее, мне сложно ориентироваться в тех вещах, которые человеку с опытом в пару месяцев и более кажутся самими собой разумеющимися.

Изопропил же написал чёрным по белому: JSON.parse() — что ещё нужно? :)
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39536343
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttNixicТо что все везде может передаваться это понятно. Каким параметром и через что, какими механизмами? Я не прошу прямо код готовый с обоих сторон, на клиенте и на сервере, мне хотя бы названия/направления.
Вот по Java я почти все стандартные вещи знаю, а вот с JS не работал ранее, мне сложно ориентироваться в тех вещах, которые человеку с опытом в пару месяцев и более кажутся самими собой разумеющимися.

Изопропил же написал чёрным по белому: JSON.parse() — что ещё нужно? :)
А я черным по белому написал, что json невалидный, я не настолько туп чтобы не погуглить и не посмотреть примеры $ajax и не почитать про ее функции и попробовать выводить в консоль данные, не подебажить в хроме что приходит в респонсе и прочее.
Вопрос, повторюсь в другом, а не в том, чем же парсить, а чем не парсить строки.

Ну хорошо-хорошо, я погуглил специально и вот ответ на ваш вопрос про то,
чем отличается JavaScript от Json: JavaScript (/ˈdʒɑːvɑːˌskrɪpt/; аббр. JS) — прототипно-ориентированный сценарный язык программирования. Является реализацией языка ECMAScript (стандарт ECMA-262). https://ru.wikipedia.org/wiki/JavaScript

JSON (JavaScript Object Notation) - простой формат обмена данными, удобный для чтения и написания как человеком, так и компьютером. Он основан на подмножестве языка программирования JavaScript, определенного в стандарте ECMA-262 3rd Edition - December 1999. JSON - текстовый формат, полностью независимый от языка реализации, но он использует соглашения, знакомые программистам C-подобных языков, таких как C, C++, C#, Java, JavaScript, Perl, Python и многих других. Эти свойства делают JSON идеальным языком обмена данными. http://json.org/json-ru.html

Прямо по первой ссылке на стековерфлоу нашлось. Уж не знаю, что вы к нему так прицепились :)) Бедный джейсон))
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39536344
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixic
Код: javascript
1.
2.
exe = "Highcharts.chart('container', {" + result.bodyText + "});";
				eval(exe);


так делать категорически не следует, только не надо нервничать
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39536346
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилNixic
Код: javascript
1.
2.
exe = "Highcharts.chart('container', {" + result.bodyText + "});";
				eval(exe);


так делать категорически не следует, только не надо нервничать
да я понимаю(много где пишут что это дыра, но я пока не поискал как именно это можно использовать в примерах), вот и думаю, как мне быть, альтернативного способа нет? Без того чтобы не указывать БДешнику формировать в базе валидные Json'ы и без проблема аяксом их разбирать на составляющие?
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39536349
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, тут еще такое условие я забыл указать. Если бы я сам обращался к полям БД я бы без проблем собрал нужный валидный json и работал бы с ним красиво. А здесь в БД есть вьюхи, в которых есть поля, где содержаться уже сформированные данные для Hightcharts.
Вот и извращаемся как можем.
А с учетом того, что я только в прошлый понедельник приступил к написанию чего-то на JS и про jquery лишь слышал (хоть и уже на протяжении лет эдак 7-ми), то при этом мне сложновато оценить задачу в целом и решить, "пинать" БДэшника с руководителями, чтобы меняли формат, или я чего-то не знаю, не вижу и туплю.
Вот в этом всего лишь и вся загвоздка :)
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39536356
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixic,

NixicКаким параметром и через что, какими механизмами?
Код: sql
1.
Highcharts.chart('container', JSON.parse(data));



какой к чёрту eval ?
(для eval ещё с кавычками разбираться)



NixicБез того чтобы не указывать БДешнику формировать в базе валидные Json'ы
их не в базе, а при получении данных из базы формируют на веб сервере(за исключением типа данных json - эти могут и в базе лежать)

а для передачи от сервера броузеру стандартных вариантов немного - json и xml
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39536357
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NixicА здесь в БД есть вьюхи, в которых есть поля, где содержаться уже сформированные данные для Hightcharts.
resultset преобразовать в json и отдать лёгким движением

бэкенд на чём ? не СУБД же напрямую броузеру данные отдаёт ))
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39536360
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилих не в базе, а при получении данных из базы формируют на веб сервере
так оно, но тут не от меня зависит, сцепляют из нескольких запросов результаты и подают все из вьюхи в виде JS кода как параметры Hightchart.
Изопропила для передачи от сервера броузеру стандартных вариантов немного - json и xml
Да, это формат данных туда сюда передающихся, я понимаю.
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39536363
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилNixicА здесь в БД есть вьюхи, в которых есть поля, где содержаться уже сформированные данные для Hightcharts.
resultset преобразовать в json и отдать лёгким движением
бэкенд на чём ? не СУБД же напрямую броузеру данные отдаёт ))
сервер на java со spring mvc.
resultset действительно может собрать все что нужно в объект, но повторюсь мы уже имеем строку в одной ячейке одно записи в таблице, а точнее во view оракловой, в эту ячейку средствами оракловых процедур и запросов и чего-то там еще, это не мое дело, собрана эта строка в виде просто строки, текста, plain/text, стринг как ни назови это просто строка. Позже на хибернейт перепишем, пока для тестов с этими графиками пользуюсь просто jdbc
Если ее вставить между
"Highcharts.chart('container', {"
и
"});"
то мы получим на странице отрисованный красивый график.
И не парсится этот текст в джейсон и как объект он не передается в аяксе.

если вставить тупо строку, то получим ее в двойных кавычках и это не будет воспринято как JS код который несет параметры для хайчарта, а будет тупо строка.

Ладно, разберусь как-нибудь :) Спасибо за комментарии, я понял, что вариантов не много на самом деле
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39536370
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NixicЛадно, разберусь как-нибудь

Учитывая, что вы умудрились заблудиться в трёх соснах, это надолго...
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39536371
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixic,

вариантов больше чем кажется - на стороне сервера пропустить через santizer типа этого
https://github.com/OWASP/json-sanitizer
(можно поискать или написать аналогичный для броузерного javascript)

если совсем припёрло - можно через eval
Код: sql
1.
2.
var arg= (function(data){return eval("(function(a){return a})("+data+")")})(data);
Highcharts.chart('container', arg);
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39536373
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttNixicЛадно, разберусь как-нибудь
Учитывая, что вы умудрились заблудиться в трёх соснах, это надолго...
Как тут не заблудиться, если советуют такую чушь как *читай_свой_первый_коммент*
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39536374
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NixicКак тут не заблудиться, если советуют такую чушь как *читай_свой_первый_коммент*
формулировка вопроса не очень чёткая была
да и упоминание о рукожопых бдшниках позже появилось(2 hVostt: кого то мне они напоминают )
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39536375
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилNixic,

вариантов больше чем кажется - на стороне сервера пропустить через santizer типа этого
https://github.com/OWASP/json-sanitizer
(можно поискать или написать аналогичный для броузерного javascript)
если совсем припёрло - можно через eval
Код: sql
1.
2.
var arg= (function(data){return eval("(function(a){return a})("+data+")")})(data);
Highcharts.chart('container', arg);


Ну то есть все-равно больше вариантов нет :) Буду давить на БДэшников, пусть вываливают нормальный объект.
На самом деле, надо сказать, что у меня в принципе все работало через параметры в виде пути или через просто параметры после '?', через jstl, страницы-то у меня jsp по сути. Хотя вообще это не важно, можно любые использовать.
А вот через GET, а именно так и нужно было, не получается получить эту строку как объект.
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39536378
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NixicНу то есть все-равно больше вариантов нет :)
ну как нет - санитайзер прикрутить


Nixicерез jstl, страницы-то у меня jsp по сути.
через фильтр можно пропустить


json-подобный javascript в нашем мире к сожалению не редкость ((
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39536387
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NixicКак тут не заблудиться, если советуют такую чушь как *читай_свой_первый_коммент*

Как тут можно заблудиться? Вам уже сказали, используйте JSON.parse(). Я сказал, читайте про JSON, это же не высшая математика, там инфы на пол часа почитать и усвоить. Но лучше сказать, что это «чушь» и идти «дальше разбираться». В чём тут разбираться? Приходит JSON, вы его парсите, получаете объект и передаёте в свой чарт. Всё.

Если приходит некорректный JSON, это вопрос совершенно другой.
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39536388
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилhVostt: кого то мне они напоминают )

Угу, есть в нашей больнице пациент ))
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39536389
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NixicБуду давить на БДэшников, пусть вываливают нормальный объект.

Может взять данные из БД и сформировать JSON самостоятельно?
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39536391
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЕсли приходит некорректный JSON, это вопрос совершенно другой.
и здесь есть разные варианты спасения
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39536417
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttNixicКак тут не заблудиться, если советуют такую чушь как *читай_свой_первый_коммент*

Как тут можно заблудиться? Вам уже сказали, используйте JSON.parse(). Я сказал, читайте про JSON, это же не высшая математика, там инфы на пол часа почитать и усвоить. Но лучше сказать, что это «чушь» и идти «дальше разбираться». В чём тут разбираться? Приходит JSON, вы его парсите, получаете объект и передаёте в свой чарт. Всё.

Если приходит некорректный JSON, это вопрос совершенно другой.
То есть вот это вот в самом начале оговоренное ни о чем не говорит? То есть совершенно ведь непонятно, валидный или невалидный json приходит. Да и из самой строки представленной СОВЕРШЕННО непонятно и не видно, а валиден ли этот в json, или все таки надо потыкать в ртфм чувака.
Такое ощущение, что суббота сказывается на некоторых пагубным образом))) лишь бы что-то написать. Зря я тему в этот день открыл))
Надо было понедельника подождать)
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39536426
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixicа и при таком подходе не могу воздействовать на данные графика, менять и прочее.
я написал как это можно сделать при помощи eval,
eval к принимаемым данным применить, а не ко всему вызову Highcharts.chart

если бы дефекты были только в отсутствии кавычек , неправильных кавычках и лишних запятых- задача легко решалась бы санитайзером json, но ваши рукожопы ещё тела функций в "json" поместили, что несколько осложняет задачу.

Nixic1. Как можно помимо $ajax отправить на клиента запрос передав айди и получить от него данные? Не используя какие-то большие фреймворки, а простые популярные библиотеки типа jquery.
в чём проблема - у вас jquery и используется(кроме вызова $.ajax можно использовать вызов $.get ). Есть способы, отличные от AJAX, но их изучение лучше отложить,
ибо они никак не помогут решить задачу обработки приходящего javascript кода


Nixic2. Как еще можно внедрить свой код внутрь метода так, чтобы строка выполнилась как код? Или лишь eval и всё тут?
смотри New Function()
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39536536
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага понятно, значит верно двигаюсь :)
Про $ajax уже как раз прочитал, что он самый удобный, а все остальные которые есть лишь надстройки над ним. Но можно обойтись и без него, но смысла нет, да.
В итоге варианта остается 2, оставить через eval и показать работающий продукт как можно быстрее, а потом рефакторить.
Или сразу давить на БДэшников, чтобы формировали валидный json.
В принципе все понятно :)
Спасибо всем за дискуссию выходного дня :))
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39536655
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixic,
вместо eval можно попробовать такое

Код: javascript
1.
2.
3.
4.
5.
6.
success : function(result) {
				exe = "Highcharts.chart('container', {" + result.bodyText + "});";
				var sc=document.creatElement('script');
                                sc.text=exe;
                                document.body.appendChild(sc);
			},


если это разовая операция.
если многократная, то данному тегу скрипт присвоить id, и при следующем использовании данный скрипт удалить, и вставить новый.
будет работать быстрее, функция eval очень тормознутая.
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39536658
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixic,

или так

Код: javascript
1.
2.
3.
4.
success : function(result) {
				exe = "Highcharts.chart('container', {" + result.bodyText + "});";
				window['Highcharts']['chart'](exe);
			},
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39536659
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixic,
так правильно
Код: javascript
1.
2.
3.
4.
success : function(result) {
				exe = "'container', {" + result.bodyText + "}";
				window['Highcharts']['chart'](exe);
			},
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39536666
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixic,
а так?
Код: javascript
1.
2.
3.
success : function(result) {
				Highcharts.chart('container', "{" + result.bodyText + "}");
			},
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39536680
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяNixic,
а так?
Код: javascript
1.
2.
3.
success : function(result) {
				Highcharts.chart('container', "{" + result.bodyText + "}");
			},


Это был мой самый первый вариант, он не прокатывает, потому что result.bodyText
есть строка и она обрамлена видимо двойными кавычками в таком случае. Грузится заголовок хайчарта, а параметры его не подгружаются.
Сейчас буду пробовать через window и другие способы выше, спасибо :)
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39536682
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixic,
если в самой строке есть кавычки - то их можно удалить . - первый и последний символ
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39536685
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но, я так понимаю, в любом случае мне не удастся поработать в итоге как с объектом, что-то поменять, преобразовать.
Так что базистов нужно будет все-таки напрягать, чтобы давали валидную строку аля набивший оскомину json :)
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39536687
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяNixic,
вместо eval можно попробовать такое

Код: javascript
1.
2.
3.
4.
5.
6.
success : function(result) {
				exe = "Highcharts.chart('container', {" + result.bodyText + "});";
				var sc=document.createElement('script');
                                sc.text=exe;
                                document.body.appendChild(sc);
			},


если это разовая операция.
если многократная, то данному тегу скрипт присвоить id, и при следующем использовании данный скрипт удалить, и вставить новый.
будет работать быстрее, функция eval очень тормознутая.

Беру на вооружение для будущих разработок, если понадобится :) Работает.
Пойду теперь почитаю что здесь вообще происходит :)
Спасибо! :)
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39536688
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixic,
после такого
Код: javascript
1.
2.
3.
4.
5.
6.
7.
success : function(result) {
				
				var sc=document.creatElement('script');
                                sc.text='var hc={'+result.bodyText + '};';
                                document.body.appendChild(sc);

			},



будет глобальный объект - hc.
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39536802
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NixicНо, я так понимаю, в любом случае мне не удастся поработать в итоге как с объектом, что-то поменять, преобразовать.
Неправильно понял - eval можно применить к данным
(обернувши в пару анонимных функций, зачем вторая - читай особенности доступа eval к локальным переменным)

Код: javascript
1.
var arg= (function(d){return eval("(function(a){return a})("+d+")")})(data);



далее с arg делай что хочешь
и вызывай обычным образом
Код: javascript
1.
Highcharts.chart('container',arg);
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39536805
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NixicТак что базистов нужно будет все-таки напрягать, чтобы давали валидную строку аля набивший оскомину json :)

"базисты" вам поставляют кроме невалидных json данных
(имена без кавычек, одиночные кавычки, лишние запятые в массивах )
ещё и функции, которые никак c json несовместимы
Код: javascript
1.
2.
formatter:function(){return 'Количество животных:
 '+this.y+' '+this.series.options.abbreviation;}



Подумайте как передать эти функции отдельно от данных
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39536809
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39536824
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,
если поправить только скобки то
Код: javascript
1.
2.
3.
4.
5.
6.
var sc=document.createElement('script');
var result_bodyText="chart:{type:'column'},title:{text:'Сведения какие-то'},xAxis:{type:'category',labels:{rotation:-45,style:{fontSize:'13px',fontFamily:'Verdana,sans-serif'}}},legend:{enabled:false},tooltip:{formatter:function(){return 'Количество животных: '+this.y+this.series.options.abbreviation;}},yAxis:{min:0,title:null},series:[{name:'Количество кого-то',scale:1000,precision:1,abbreviation:'тыс.',data:[['Январь 2015',6.2],['Февраль 2015',42.5],['Март 2015',46.],['Апрель 2015',47.4],['Май 2015',4.1],['Июнь 2015',13.4],['Июль 015',26.9],['Август 2015',192.7],['Сентябрь 2015',216.1],['Октябрь 2015',229.1],['Ноябрь 2015',275.2],['Декабрь 2015',435.7]]}]";


                                sc.text='var hcc={'+result_bodyText + '};';
                                document.body.appendChild(sc);



то всё валидно
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39536869
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадято всё валидно
скприпт валиден, а не json

как часто на страницу новые данные подгружаются?
все костыли ведут к утечкам памяти.

Устраивают костыли и хорошо.
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39536878
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилвадято всё валидно
скприпт валиден, а не json

как часто на страницу новые данные подгружаются?
все костыли ведут к утечкам памяти.

Устраивают костыли и хорошо.
получается что та не json.
если это применять многократно, то да, уттекёт.
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39536882
DeanWinchester
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяNixic,
после такого
Код: javascript
1.
2.
3.
4.
5.
6.
7.
success : function(result) {
				
				var sc=document.creatElement('script');
                                sc.text='var hc={'+result.bodyText + '};';
                                document.body.appendChild(sc);

			},



будет глобальный объект - hc.

Это зачем если есть requirejs ?
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39536889
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeanWinchesterвадяNixic,
после такого
Код: javascript
1.
2.
3.
4.
5.
6.
7.
success : function(result) {
				
				var sc=document.creatElement('script');
                                sc.text='var hc={'+result.bodyText + '};';
                                document.body.appendChild(sc);

			},



будет глобальный объект - hc.

Это зачем если есть requirejs ?
тут чистый js. и это для примера.
так многократно не стоит делать
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39536965
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадятак многократно не стоит делать

Можно и с земли разок поесть, но многократно не стоит так делать.
Какая же ужасная у тебя жизнь
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39537083
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В принципе все решилось, кстати eval() все же сработал, меня наставник, если так можно его назвать ткнул носом сегодня.
Оказывается помимо {} надо было еще обернуть строку в () скобки и в двойные кавычки.
И вот тогда-то мы получаем объект, можем его в консоль вывести и раскрыть списком объектов, а так же можем обращаться к его элементам. Я когда увидел, то у меня челюсть отпала )))
Так-то все это интересно, конечно, весь этот жаваскрипт )) Буду и так и так пробовать, по всякому, нужно все варианты около этой проблемы проработать, тогда лучше усвоится. Я думаю.
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39537106
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixic, вот только eval хоть есть выход в этом положении, но намного круче было б если обойтись без него.
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39537112
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяNixic, вот только eval хоть есть выход в этом положении, но намного круче было б если обойтись без него.
разобрать acorn, например,
тела функций - собрать escodegen и компилить через new Function(), кэшируя результат компиляции
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39537121
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так вроде не должно утекать
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
var sc=document.createElement('script');
var hcc={};
var result_bodyText="chart:{type:'column'},title:{text:'Сведения какие-то'},xAxis:{type:'category',labels:{rotation:-45,style:{fontSize:'13px',fontFamily:'Verdana,sans-serif'}}},legend:{enabled:false},tooltip:{formatter:function(){return 'Количество животных: '+this.y+this.series.options.abbreviation;}},yAxis:{min:0,title:null},series:[{name:'Количество кого-то',scale:1000,precision:1,abbreviation:'тыс.',data:[['Январь 2015',6.2],['Февраль 2015',42.5],['Март 2015',46.],['Апрель 2015',47.4],['Май 2015',4.1],['Июнь 2015',13.4],['Июль 015',26.9],['Август 2015',192.7],['Сентябрь 2015',216.1],['Октябрь 2015',229.1],['Ноябрь 2015',275.2],['Декабрь 2015',435.7]]}]";

sc.setAttribute('id',"sss");
sc.text='hcc={'+result_bodyText + '};';
document.body.appendChild(sc);
document.getElementById('sss').remove();
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39537123
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так проще
Код: javascript
1.
2.
3.
4.
5.
6.
var sc=document.createElement('script');
var hcc={};
var result_bodyText="chart:.........";

sc.text='hcc={'+result_bodyText + '};';
document.body.appendChild(sc).remove();


это конечно велосипед, но зато без eval :)
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39538530
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixic,
В бд нехорошо хранить json.
В java 99% 3-х звенка. Поэтому из бд в json делать на АппСервере.
Т.е. это не базисты, а бэкенщики.
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39538832
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Nixic,
В бд нехорошо хранить json.
В java 99% 3-х звенка. Поэтому из бд в json делать на АппСервере.
Т.е. это не базисты, а бэкенщики.
в mysq появился тип поля json.
вот только у тс не jdon передаётся.
...
Рейтинг: 0 / 0
Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
    #39538896
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяв mysq появился тип поля json.это маркетинг
...
Рейтинг: 0 / 0
53 сообщений из 53, показаны все 3 страниц
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]