powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
25 сообщений из 53, страница 1 из 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
25 сообщений из 53, страница 1 из 3
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Невалидный JSON, но валидный JS. Java Spring MVC, eval() и прочие прелести :)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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