С какими данными используется формат json. Типы данных, синтаксис и пример. Неподдерживаемые собственные типы данных

07.05.2019

Переменные, массивы и объекты - привычная и удобная форма представления данных. Описывать данные принято в языке браузера JavaScript, что делать не обязательно в языке сервера PHP. Формат JSON позволяет обобщить их в одно целое и не делать акцент на языке программирования. При этом данные превращаются в пары: "имя = значение". Значение в каждой из них также может быть совокупностью таких пар.

Принято JSON ассоциировать с фигурными скобками и Последнее вполне обосновано, так как формат JSON = Object Notation JavaScript. В последние особенно динамичные годы многое изменилось. Что создавалось ради конкретной цели, часто приносило неожиданные плоды или открывало новые горизонты.

Обмен данными: браузер - сервер

Технология AJAX стала традиционной, обычное обновление страницы целиком перестало пользоваться популярностью. Посетитель, открывая сайт, инициирует серию частичных обменов данными, когда те или иные страницы меняются только в том месте, которое актуально.

Считается, что появление JSON связано с использованием именно AJAX, но на самом деле ассоциативные и его объектная нотация (особенности синтаксиса описания и использования объектов) имеют гораздо более родственное отношение к JSON, чем обмен данными между браузером и сервером.

Так как контент страниц современных сайтов действительно стал «массивным» (объемным), то и эффективность формата для обмена данными приобрела особое значение. Нельзя сказать, что JSON стал новым представлением данных, но то что он давно был элементом синтаксиса JavaScript, имеет существенное значение.

Использование кириллицы в именовании переменных - очень неожиданное явление (нонсенс), но это работает в последних версиях Chrome, Firefox и, даже, в Internet Explorer 11.

Кириллица и JSON

Разумеется, использовать это совершенно неожиданное явление не стоит, припоминая, как легко значения переменных, записанные русскими буквами, превращаются в кракозябры: что тут говорить про имена, особенно внешние.

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

Не важно, какое именно имело под собой основание синтаксическое новшество - JSON, важно, что оно дало законное право и реальную возможность поставить соответствие: "любое имя = любое значение".

Надо отдать должное языку JavaScript: то, что предусмотрено синтаксисом, не обязывает разработчика и ничего ему не навязывает. Разработчик свободно использует синтаксис языка для оптимального формирования модели данных и алгоритма их использования.

PHP и JSON

Принимая данные в формате JSON, сервер (посредством PHP, в частности) предоставляет возможность их обрабатывать как есть и возвращать обратно в браузер результат в аналогичном формате. Исходный массив PHP:

  • $cJSON = array ("a"=> "alfa", "b"=> "beta", "g"=> "gamma").

Преобразование в формат JSON для передачи в браузер:

  • $cJS = json_encode($cJSON ).

Результат:

  • {"a":"alfa","b":"beta","g":"gamma"}.

Допускается изображенная на фото вложенность.

Здесь сформированный массив был добавлен новым элементом «сам в себя» с автоматическим индексом "0", а затем еще раз с указанным индексом "z".

Json_decode() выполняет преобразование строки JSON в массив PHP. Аналогичных результатов можно добиться, манипулируя функциями и explode(). В некоторых случаях этот вариант предпочтительнее.

Уровень вложенности

Элементы могут быть вложены друг в друга как на стороне браузера, так и на стороне сервера. На практике формат JSON (описание стандарта RFC 4627) предоставляет значительно более 4 уровней вложенности, но не следует злоупотреблять этой возможностью.

Лучше всего никогда не выходить за пределы разумной достаточности, это делает код читабельным, упрощает его отладку и понимание другими разработчиками.

JSON принято относить к конструкциям данных, которые проще XML, понятны одновременно и людям, и компьютерам. Это действительно так, когда объем данных мал, а уровень вложенности разработчик выбрал грамотно. Во всех остальных случаях считать количество скобок и понимать сложно как на стороне браузера, так и на стороне сервера.

Файлы JSON

Применение JSON на практике часто не ограничивается доступной восприятию короткой строкой. Любые конструкции данных всегда носят прагматичный характер. При этом JSON может эффективно применяться как в реальных данных задачи (штат предприятия), так и для реализации временных данных (кэш объекта).

Штат предприятия и JSON-формат: пример

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

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

JSON - это обычный текстовый файл. Случай со штатным расписанием, куда ни шло. Прочитать его всегда можно. Открыть и изменить также доступно в любом текстовом редакторе, который не имеет привычки добавлять свою служебную информацию в содержание файла. Вообще, *.json - это чистый текст как внутри браузера, так и внутри файла - строка.

На фото представлен кэш объекта, формирующего картинку, пример.

Это пример содержания файла, сформированного сайтом, предоставляющим услугу цветной объемной печати на кружках и керамических изделиях. Естественно, решить, имея такой JSON-формат, чем открыть его, действительно проблематично. Однако в этом и подобных случаях проблем с чтением файла не возникает: PHP читает файл, разбирает его и передает в браузер. Изменённые посетителем данные возвращаются на сервер и записываются обратно.

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

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

XML и JSON

"Всему свое время" - классическое знание, принятое за аксиому еще до появления программирования. "Ни что не появляется просто так", - это тоже было до того, как человек написал первую вразумительную программу на искусственном языке.

Форматы данных появляются от реальной потребности и основываются на достигнутых знаниях. У HTML - своя стезя, у XML - своя дорога, а JSON - это объектная логика JavaScript, расширенная на другие языки. Сравнивать одно с другим не лучшее занятие. Каждому свое.

XML чудесно справляется со своими задачами и уходить в историю явно не собирается. А JSON использовался и до 2006 года, просто не каждый разработчик считал своим долгом декларировать те или иные варианты представления своих данных.

Имелись случаи в практике, когда на бэйсике были написаны программы, не использующие JSON как таковой, но прекрасно хранящие пары "имя = значение" и предоставляющие их в распоряжение нужным алгоритмам в нужное время.

Спецсимволы («`», «~», «|», ...) и форматы данных

Привычка работать с ассоциативными массивами и объектами на JavaScript делает использование JSON естественным и удобным. Это действительно отличный формат, но умение разделять и соединять, манипулируя строками и массивами, имеет куда более глубинные корни.

Функции join/split языка JavaScript и implode/explode языка PHP позволяют удобно и эффективно использовать как форматы данных XML, JSON, так и собственный вариант. Последний часто оптимальнее, а первые два идеально подходят для вариантов общего пользования. Если идет передача информации другому разработчику, серверу, в файл или в базу данных, лучше XML и JSON не найти. С ними все работают, потому передача/прием информации не нуждается в комментариях.

Использование JSON в Android

Чтение и запись данных в формате JSON в Android - не только норма вещей, но и множество объектов, ориентированных на работу именно с таким форматом данных.

При этом используется именно формат JSON. Возможно, это так и есть, но вопрос не в феноменальности соцсетей, а в том что действительно представление информации в формате "имя = значение" удобно как для программирования, так и для использования. В отличие от строгого и закомплексованного «XML» это действительно человеко-удобный формат.

Ассоциативные массивы

Сложилось так, что переменные надлежит описывать (JavaScript) или хотя бы указывать начальное значение (PHP). В обоих случаях переменная может изменить свой тип очень легко. При необходимости язык выполняет это преобразование автоматически.

Но почему бы переменной не менять также свое имя, не появляться в ходе выполнения алгоритма и не исчезать, когда необходимость в ней отпадет? Ассоциативные массивы позволяют решить эту проблему, но тогда при использовании таких относительно динамичных переменных, имя массива и соответствующие синтаксические конструкции будут следовать в места их применения.

Особенно это обстоятельство ярко выражено на PHP, но с этим можно мириться, как, впрочем, с символом «$» в имени переменной и комбинацией «$this->» внутри объекта. Программируя одновременно на JavaScript и PHP, поначалу действительно диву даешься, как все отличается, но потом все становится таким привычным и естественным...

Ассоциативный массив -> JSON

В этом примере посредством библиотеки PHPOffice/PHPWord создается документ *.docx, и массив aProperties содержит свойства этого документа (автор, компания, заголовок, категория, дата создания...).

Второй массив содержит данные по странице:

  • ориентация (альбомная или обычная);
  • размеры по вертикали и горизонтали;
  • отступы (поля слева, сверху, снизу, справа);
  • колонтитулы.

Формирование документа выполняется на сервере, где установлена библиотека PHPOffice/PHPWord. На сайте предусмотрено управление значениями этих массивов посредством JavaScript. Результат в формате JSON возвращается обратно на сервер и используется в алгоритмах на PHP, в его конструкциях, то есть в массивах.

Динамичные переменные

Формат JSON решает проблему динамичных переменных. Здесь можно создавать, изменять и удалять переменные без лишних синтаксических нагромождений. Это красиво смотрится и используется в JavaScript.

В этом примере функция GetOjInfo () выбирает имя значения и значение из объекта. Изначально объект JSON-строки, присвоенной переменной ojInfo, располагает тремя элементами: Name, age и work. Чуть позже добавляется переменная Status.

После первого оператора delete строка ojInfo теряет элемент age, после второго delete - элемент work. Если предположить, что данная строка есть подборка переменных, имеющих определенный смысл, то посредством JSON можно реально создавать, изменять и удалять любые их наборы вне операционного поля (синтаксиса) описания и обработки языка JavaScript.

Формат JSON на такой вариант не был рассчитан, но такое возможно, практично и удобно.

Знакомые с программированием люди сразу узнают файлы с расширением JSON. Этот формат – аббревиатура терминов JavaScript Object Notation, и является он по сути текстовым вариантом обмена данными, использующемся в языке программирования JavaScript. Соответственно, справиться с открытием таких файлов поможет либо специализированное ПО, либо текстовые редакторы.

Основной особенностью скриптов в формате JSON является взаимозаменяемость его на формат XML. Оба типа представляют собой текстовые документы, которые можно открывать текстовыми процессорами. Однако начнем мы со специализированного ПО.

Способ 1: Altova XMLSpy

Достаточно известная среда разработки, которую используют в том числе и веб-программисты. Эта среда также генерирует файлы JSON, следовательно способна и открывать сторонние документы с таким расширением.


Недостатков у данного ПО два. Первый – платная основа распространения. Пробная версия активна 30 дней, однако для её получения необходимо указать имя и почтовый ящик. Второй – общая громоздкость: человеку, которому просто нужно открыть файл, она может показаться чересчур навороченной.

Способ 2: Notepad++

Многофункциональный текстовый редактор — первый из списка подходящих для открытия скриптов в формате JSON.


Плюсов у Notepad++ изрядно – тут и отображение синтаксиса многих языков программирования, и поддержка плагинов, и малый размер… Однако в силу некоторых особенностей работает программа неторопливо, особенно если открыть в ней объемный документ.

Способ 3: AkelPad

Невероятно простой и в то же время богатый на возможности текстовый редактор от российского разработчика. В число поддерживаемых им форматов входит и JSON.


Как и Notepad++, этот вариант блокнота также бесплатен и поддерживает плагины. Он работает шустрее, однако большие и сложные файлы может не открыть с первого раза, так что имейте в виду такую особенность.

Способ 4: Komodo Edit

Бесплатное ПО для написания программного кода от компании Komodo. Отличается современным интерфейсом и широкой поддержкой функций для программистов.


В программе, к сожалению, отсутствует русский язык. Однако рядового пользователя скорее отпугнет избыточный функционал и непонятные элементы интерфейса – все-таки этот редактор ориентирован в первую очередь на программистов.

Способ 5: Sublime Text

Еще один представитель code-oriented текстовых редакторов. Интерфейс проще, чем у коллег, однако возможности те же. Доступна и портативная версия приложения.


К сожалению, Sublime Text недоступен на русском языке. Недостатком можно назвать и условно-бесплатную модель распространения: свободная версия ничем не ограничена, но время от времени появляется напоминание о необходимости покупки лицензии.

Способ 6: NFOPad

Простой блокнот, однако для просмотра документов с расширением JSON тоже подойдет.


NFOPad подходит для просмотра JSON-документов, однако есть нюанс – при открытии некоторых из них программа намертво зависает. С чем связана такая особенность – неизвестно, но будьте внимательны.

Способ 7: Блокнот

И наконец, стандартный текстовый процессор, встроенный в ОС Windows, также способен открывать файлы с расширением JSON.


В завершение скажем следующее: файлы с расширением JSON – обычные текстовые документы, которые могут обрабатывать не только описанные в статье программы, а и куча других, в том числе и его бесплатные аналоги и . Высокая вероятность того, что с такими файлами смогут справиться и .

Урок, в котором рассматривается, что такое JSON и какие он имеет преимущества по сравнению с другими форматами данных.

Понятие JSON

JSON (JavaScript Object Notation) - это текстовый формат представления данных в нотации объекта JavaScript.

Это означает то, что данные в JSON организованы, так же как и в объекте JavaScript. Но в отличие от последнего формат записи JSON имеет некоторые особенности, которые будут рассмотрены немного позже.

Применяется JSON обычно в связки с AJAX для того, чтобы сервер мог передать данные в удобной форме сценарию JavaScript, который затем уже отобразит их на странице.

Структура формата JSON

Кто знаком с процессом создания объектов в JavaScript, не увидит ни чего нового в структуре формата JSON. Это связано с тем, что структура JSON соответствует структуре объекта JavaScript с некоторыми ограничениями.

Более просто представить себе JSON можно как контейнер, состоящий из элементов. Каждый элемент в таком контейнере - это некоторая структурная единица, состоящая из ключа и значения.

При этом значение напрямую связано с ключом и образуют так называемую пару ключ-значение. Для того чтобы получить значение в таком объекте, необходимо знать его ключ. Синтаксически такие данные в JSON записываются следующим образом:

В вышеприведенной записи видно, что ключ отделяется от значения с помощью знака двоеточия (:). При этом ключ в объекте JSON обязательно должен быть заключен в двойные кавычки. Это первая особенность JSON, которая его отличает от объекта JavaScript . Т.к. в объекте JavaScript ключ (свойство объекта) не обязательно должен быть заключён в двойные кавычки.

Например, структура объекта, которая является валидной с точки зрения JavaScript и не валидной с точки зрения JSON:

Var person = { name: "Иван"; } // объект JavaScript

Предупреждение: имя ключу старайтесь задавать так чтобы не усложнить доступ к данным, т.е. при составлении имени предпочтительно придерживаться верблюжьей нотации или использовать для соединения слов знак нижнего подчёркивания ("_").

Значение ключа в JSON может быть записано в одном из следующих форматов: string (строкой), number (числом), object (объектом), array (массивом), boolean (логическим значением true или false), null (специальным значением JavaScript).

Это второе ограничение в JSON, т.к. объект JavaScript может содержать любой тип данных, включая функцию .

Var person = { "name" : "Иван"; "setName": function() { console.log(this.name); } } // объект JavaScript

Для отделения одного элемента (пары ключ-значение) от другого используется знак запятая (,).

Например, рассмотрим JSON, состоящий из различных типов данных.

Внимание: формат представления данных JSON не допускает использование внутри своей структуры комментариев.

Работа с JSON в JavaScript

В отличие от объекта JavaScript JSON представляет собой строку.

Например:

// например переменная personData, содержит строку, которая представляет из себя JSON var personData = "{"name":"Иван","age":37,"mother":{"name":"Ольга","age":58},"children":["Маша","Игорь","Таня"],"married": true,"dog": null}";

Работа с JSON обычно ведётся в двух направлениях:

  1. Парсинг - это перевод строки, содержащей JSON, в объект JavaScript.
  2. Конвертирование объекта JavaScript в строку JSON. Другими словами, это действие выполняет преобразование обратное парсингу.

Парсинг JSON

Парсинг JSON, т.е. перевод строки JSON в объект JavaScript, осуществляется с помощью метода eval() или parse() .

Использование метода eval():

// переменная person - это объект JavaScript, который получен путём выполнения кода (строки) JSON var person= eval("("+personData+")");

Использование метода JSON.parse():

// переменная person - это объект JavaScript, который получен путём парсинга строки JSON var person = JSON.parse(personData);

Конвертирование объекта JavaScript в строку JSON

Перевод объекта JavaScript в строку JSON осуществляется с помощью метода JSON.stringify() . Данный метод осуществляет действие обратное методу JSON.parse() .

Var personString = JSON.strigify(person);

Преимущества формата JSON

Формат представления данных JSON имеет следующие преимущества:

  • удобные и быстрые в работе методы, предназначенные для конвертации (парсинга) строки JSON в объект JavaScript и обратно;
  • понятная и простая структура данных;
  • очень маленький размер по сравнению с другими форматами данных (например XML). Это связано с тем, что формат JSON содержит минимальное возможное форматирование, т.е. при его написании используется всего несколько специальных знаков. Это очень важное преимущество, т.к. данные представленные в формате JSON будут быстрее загружаться, чем, если бы они были бы представлены в других форматах.

Из-за того что данный формат имеет очень много преимуществ он стал применяться не только в JavaScript, но и во многих других языках, таких как C, Ruby, Perl, Python, PHP и т.д.

Сравнение форматов JSON и XML

Формат JSON имеет следующие преимущества перед форматом XML:

  1. При передаче некоторых данных размер JSON будет значительно меньше, чем размер XML.
  2. JSON имеет более удобные методы конвертации в структуры данных JavaScript, чем XML.
  3. JSON более просто создавать, чем XML.

Работа с данными JSON после парсинга осуществляется как с объектом JavaScript.

//JSON var personData = "{"name":"Иван","age":37,"mother":{"name":"Ольга","age":58},"children":["Маша","Игорь","Таня"],"married": true,"dog": null}"; //Объект JavaScript person var person = JSON.parse(personData);

Рассмотрим основные моменты:

//получить значения ключа (свойства) name person.name; person["name"]; //получить значения ключа (свойства) name, находящегося в объекте mother person.mother.name; //удалить элемент age delete(person.age) //добавить (или обновить) ключ (свойство) person.eye = "карие"; //при работе с массивами необходимо использовать методы, предназначенные для работы именно с массивами //удалить 1 элементиз массива (метод splice) person.children.splice(1,1) //добавить элемент в массив (метод push) person.children.push("Катя");

Для перебора элементов в объекте можно использовать цикл for..in:

For (key in person) { if (person.hasOwnProperty(key)) { //ключ = key //значение = person console.log("Ключ = " + key); console.log("Значение = " + person); } // если объект person имеет key (если у person есть свойство key) } // перерабрать все ключи (свойства) в объекте

Для перебора элементов массива можно использовать следующий цикл:

For (var i=0; i

JSON является частью стандарта ECMAScript начиная с 1999 года, когда ECMA определила функцию eval() воспринимающую формат. Он стал набирать популярность вместе с нарастающим успехом Ajax. Слово JSON часто появляется когда кто-нибудь заводит речь об Ajax. Известно, что JSON является другим форматом данных, что он замещает XML, и что многие программисты активно поддерживают его. Но что такое в действительности JSON и в чем его преимущества?

Почему JSON?

Преимущество JSON заключается в том, что он распознается в JavaScript. Нет необходимости разбирать документ, как это происходит с XML, для передачи данных через интернет.

JSON и XML

Преимущества JSON:

  • Простой для чтения и понимания.
  • Простой для использования.

Преимущества XML:

  • Имеет возможности расширения

И XML и JSON имеют возможность интегрировать большой объем данных в бинарной форме.

Синтаксис JSON

Компоненты JSON:

  • Объекты: содержат объекты или атрибуты.
  • Скалярные переменные: число, строка, логическая переменная.
  • Массив.
  • Литеральные значения: null , true , false , "строка символов ", и числовые значения.

Объект

Содержит элемент или список элементов, где каждый элемент описывается следующим образом:

"имя" : "значение"

Синтаксис объекта:

{ элемент, элемент, .... }

Массив

Набор значений, разделенных запятой.

[ значение, значение, ....]

Значение

Значение может быть: объектом, массивом, литеральным значением (строка, число, true , false , null ).

Для создания JSON файла больше ничего не нужно!

Пример JSON файла

Простой пример структура меню. В данном объекте содержатся атрибуты и массив, который включает другие объекты строки меню.

{ "menu": "Файл", "commands": [ { "title": "Новый", "action":"CreateDoc" }, { "title": "Открыть", "action": "OpenDoc" }, { "title": "Закрыть", "action": "CloseDoc" } ] } Эквивалент на XML:

Файл Новый</value> <action>CreateDoc</action> </item> <item> <title>Открыть</value> <action>OpenDoc</action> </item> <item> <title>Закрыть</value> <action>CloseDoc</action> </item> </commands> </root> </p><h3><span>Как использовать формат </span></h3> <p>Файл JSON позволяет загружать данные с сервера или на сервер. Например, сохранение содержимого формы, которая была только что заполнена пользователем. Процесс включает три фазы: обработку браузером, обработку сервером, и обмен данными между ними. </p> <h4><span>Клиентская часть (браузер) </span></h4> <p>Данная часть выполняется достаточно просто, так как JSON является частью определения JavaScript. Содержимое файла или определяющих данных назначается переменным и они становятся объектами программы. </p> <h4>Серверная часть </h4> <p>Файл JSON используется различными программными языками, включая PHP и Java , благодаря наличию парсеров, которые позволяют получать содержимое и даже конвертировать его в классы и атрибуты языка. На сайте JSON можно найти парсеры для многих языков программирования. </p> <h4>Обмен данными </h4> <ul><li><span>с использованием XMLHttpRequest. </span></li> </ul><p>Файл JSON обрабатывается <a href="/sozdanie-funkcii-v-javascript-svoistva-i-metody-funkcii-chto/">функцией JavaScript</a> <i>eval() </i>. Отправка файла на сервер может быть выполнена с помощью XMLHttpRequest . Файл отправляется как текстовый и обрабатывается парсером языка программирования, который используется на сервере. </p> <h3>Пример </h3> <p>Код XMLHttpRequest: </p><p>Var req = new XMLHttpRequest(); req.open("GET", "file.json", true); req.onreadystatechange = myCode; // обработчик req.send(null); </p><p>Обработчик JavaScript: </p><p>Function myCode() { if (req.readyState == 4) { var doc = eval("(" + req.responseText + ")"); } } Использование данных: var menuName = document.getElementById("jsmenu"); // ищем поле menuName.value = doc.menu.value; // назначаем значение полю Как получать данные: doc.commands.title // читаем значение поля "title" в массиве doc.commands.action // читаем значение поля "action" в массиве</p> <p><b>JSON </b> (JavaScript Object Notation – представление <a href="/obekty-v-javascript-sozdanie-obektov-javascript-javascript-obekty/">объектов JavaScript</a>) – <a href="/kak-sdelat-izobrazhenie-formate-png-kak-mozhno-legko-sdelat/">легкий формат</a> представления данных, основанный на подмножестве синтаксиса JavaScript, а точнее на <b>литералах </b> массивов и объектов. JSON – это альтернатива традиционным форматам (обычный текст или XML), которые используются при обмене данными между сервером и клиентом. В отличие от XML и XML-совместимых языков, которые требуют <a href="/chto-znachit-oshibka-sintaksicheskogo-analiza-paketa-tipichnye-oshibki-android/">синтаксического анализа</a>, определения JSON могут быть просто включены в <a href="/ubedites-chto-v-vashem-brauzere-vklyuchen-javascript-kak-vklyuchit-scenarii/">сценарии JavaScript</a>. Формат JSON предложен программистом Дугласом Крокфордом (Douglas Crockford).</p> <p>Может я зайду издалека, но для того чтобы действительно понять JSON, сначала поймем (вспомним) синтаксис массивов и объектов в литеральной нотации JavaScript.</p> <p><b>Массивы как литералы </b><br> Массив в JavaScript можно определить с помощью конструктора Array, например так:</p><p>Var aData = new Array("строка", true, 43, null); </p><blockquote><p>В <a href="/metody-massivov-javascript-massivy-v-javascript/">JavaScript массивы</a> нетипизированные, поэтому в них можно хранить <a href="/chto-takoe-bootstrap-i-kak-im-polzovatsya-skachivanie-less-ishodnikov-i-ih/">различные типы</a> данных. В примере массив содержит строку, логическое значение, число и значение null.</p> </blockquote> <p>Массив же, описываемый как литерал, можно определить с помощью <a href="/kvadratnye-i-figurnye-skobki-v-vorde-kak-postavit-udarenie-stepen-i/">квадратных скобок</a>, внутри – значения элементов массива, через запятую. Вот как будет выглядеть тот же самый массив, но в литеральной нотации:</p><p>Var aData = ["строка", true, 43, null]; </p><p>Обращаться к <a href="/kak-udalit-statusy-v-socseti-odnoklassniki-udalenie-prilozhenii-i/">отдельным элемента</a> массива можно указывая имя массива и номер элемента:</p><p>Alert(aData); alert(aData); </p><p><b>Объекты как литералы </b><br> Объекты в JavaScript определяются с помощью конструктора Object, например так:</p><p>Var oAuto = new Object(); oAuto.firm = "Audi"; oAuto.model = "A6"; oAuto.year = 2008; oAuto.price = 78000; </p><p>Тот же самый код, но в литеральной нотации будет выглядеть так:</p><p>Var oAuto = { "firm":"Audi", "model":"A6", "year":2008, "price":78000 }; </p><p>Этот код создает объект со свойствами firm, model, year и price и обращаться к ним можно таким образом:</p><p>Alert(oAuto.model); alert(oAuto.year); </p><p>но можно использовать и синтаксис массивов обращаясь к свойствам объекта таким образом:</p><p>Alert(oAuto["model"]); alert(oAuto["year"]); </p><p>В литеральной нотации описания массивов и объектов можно вкладывать друг в друга, создавая таким образом <b>объект массивов </b> или <b>массив объектов </b>. Посмотрите этот код:</p><p>Var aAuto = [ { "firm":"BMW", "model":"X5", "year":2007, "price":99000 }, { "firm":"Audi", "model":"A6", "year":2008, "price":78000 }, { "firm":"Volkswagen", "model":"Touareg 7L", "year":2006, "price":45000 } ]; </p><p>Мы создали массив aAuto, который содержит три объекта. Комбинируя синтаксис обращения к массивам с синтаксисом обращения к объектам попробуем получить год выпуска второго автомобиля:</p><p>Alert(aAuto.year); // получаем 2008 </p><p>Можно сделать наоборот, и описать объект массивов:</p><p>Var oAuto = { "firm":["BMW", "Audi", "Volkswagen"], "model":["X5", "A6", "Touareg 7L"], "year":, "price": }; </p><p>в этом случае обращаемся сначала к объекту, а затем к массиву внутри него:</p><p>Alert(oAuto.year); // получаем 2008 </p><p>Вот такое длинное получилось предисловие, но зато теперь будет гораздо понятнее при чем здесь вообще <b>JSON </b>…</p> <p><b>JSON </b> – комбинация массивов и объектов и предназначен только для хранения данных. Как следствие, <b>JSON </b> не может иметь переменных и не допускает никаких операций над ними. Давайте попробуем записать предыдущий пример, используя синтаксис <b>JSON </b>:</p><p> { "firm":["BMW", "Audi", "Volkswagen"], "model":["X5", "A6", "Touareg 7L"], "year":, "price": } </p><p><b>Обратите внимание </b>, что пропали имя переменной и точка-запятая. Передача такого объекта с использованием HTTP-протокола будет происходить очень быстро, поскольку содержит минимум символов. Получив такие данные на стороне клиента и записав ее в какую-либо переменную (например sData) мы получаем строку информации.<br><b>Обратите внимание </b>: именно строку, а совсем не объект или объект с вложенными в него массивами. Преобразуем строку в объект, используя функцию <b>eval() </b>.</p><p>Var oAuto = eval("(" + sData + ")"); </p><p>В результате этого получится объект, который мы описали чуть выше.</p> <p><b>Преимущество JSON перед XML </b><br> Так в чем же все-таки состоит преимущество JSON перед XML?</p> <blockquote><p>Здесь <a href="/ne-vklyuchaetsya-planshet-prichina-vmesto-etogo-sdelaite-vot-chto-v-chastnosti-rech/">речь идет</a> исключительно о преимуществах и недостатках только лишь с точки зрения организации обмена данными в Сети.</p> </blockquote> <p>В том, что язык XML оказывается очень избыточным при сравнении с JSON. Давайте убедимся в этом на <a href="/analiz-makrosy-eksel-vba-svoistva-i-funkcii-primery-zadach-visual-basic-for-applicationvba/">простом примере</a>. Одни и те же данные представим в <a href="/sdelat-xml-fail-redaktiruemym-onlain-xml-format-chem-otkryt-i-redaktirovat/">формате XML</a> и в формате JSON.</p><p> <general> <cars> <car> <firm>BMW</firm> <model>X5</model> <year>2007</year> <price>99000</price> </car> <car> <firm>Audi</firm> <model>A6</model> <year>2008</year> <price>78000</price> </car> <car> <firm>Volkswagen</firm> <model>Touareg 7L</model> <year>2006</year> <price>45000</price> </car> </cars> </general> </p><p>так это выглядит в формате XML, а ниже – в формате JSON:</p><p> { "general": { "cars":[ { "firm":"BMW", "model":"X5", "year":2007, "price":99000 }, { "firm":"Audi", "model":"A6", "year":2008, "price":78000 }, { "firm":"Volkswagen", "model":"Touareg 7L", "year":2006, "price":45000 } ] } } </p><p>При использовании формата JSON выигрыш составит 42 байта, а без учета пробелов и вовсе 86 байт. А если вспомнить еще и о том, что данные в формате JSON не требуют дополнительного синтаксического анализа на стороне клиента – преимущество JSON перед XML в аспекте передачи данных от сервера клиенту становится очевидным…</p> <script>document.write("<img style='display:none;' src='//counter.yadro.ru/hit;artfast_after?t44.1;r"+ escape(document.referrer)+((typeof(screen)=="undefined")?"": ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth? screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+";h"+escape(document.title.substring(0,150))+ ";"+Math.random()+ "border='0' width='1' height='1' loading=lazy>");</script> </div> </div> <div class="mb40 pr"> <div style="margin-top: 30px; margin-bottom: 35px;"> </div> <div style="margin-top: 0px; margin-bottom: 0px; font-family: Arial; font-size: 15px;"> <div id="yandex_rtb_R-A-105632-3"></div> </div> </div> <style> .sh_icon a:hover { opacity: 0.6; } </style> <div class="catTitle"> <span class="fl noLinknew">Похожие статьи</span> <div class="clr"></div> </div> <ul class="medbeArticle medbeEvents js-novinki "> <li id="bx_3218110189_16277"> <div class="info" style="position:relative;"> <a href="/kak-vyglyadit-samsung-not-8-samsung-galaxy-note8-sd835---tehnicheskie-harakteristiki/" class="date">2024-05-10 00:25:16</a> </div> <a href="/kak-vyglyadit-samsung-not-8-samsung-galaxy-note8-sd835---tehnicheskie-harakteristiki/"> <div class="title"> Samsung Galaxy Note8 SD835 - Технические характеристики </div> </a> <p class="text"> Информация о марке, модели и альтернативных названиях конкретного устройства, если таковые имеются. ДизайнИнформация о размерах и весе устройства, представленная в разных единицах измерения. Использованные материалы, предлагаемые цвета,... </p> <a href="/category/computer-literacy/" class="catName">Компьютерная грамотность</a> <div class="clr"></div> </li> <li id="bx_3218110189_16277"> <div class="info" style="position:relative;"> <a href="/notepad-skachat-russkii-poslednyaya-versiya-besplatnye-programmy-dlya-windows/" class="date">2024-05-09 00:25:26</a> </div> <a href="/notepad-skachat-russkii-poslednyaya-versiya-besplatnye-programmy-dlya-windows/"> <div class="title"> Бесплатные программы для Windows скачать бесплатно </div> </a> <p class="text"> Сегодня компьютерные технологии, стремительно развиваются, совершенствуя другие отрасли производства. Для развития других технологий, с помощью компьютерных, нужны специальные программы. Эти программы устанавливают на многие заводы и фабрики, чтобы... </p> <a href="/category/useful-programs/" class="catName">Полезные программы</a> <div class="clr"></div> </li> <li id="bx_3218110189_16277"> <div class="info" style="position:relative;"> <a href="/kak-vyvesti-raznoe-izobrazhenie-na-dva-monitora-dva-monitora-dlya/" class="date">2024-05-07 00:22:21</a> </div> <a href="/kak-vyvesti-raznoe-izobrazhenie-na-dva-monitora-dva-monitora-dlya/"> <div class="title"> Два монитора – для активных пользователей ПК </div> </a> <p class="text"> Инструкция Два сравнительно небольших экрана могут с легкостью заменить один широкоформатный с большой диагональю. Иногда подключение второго позволяет использовать одновременно несколько функций одного компьютера. Современные видеоадаптеры в... </p> <a href="/category/solving-problems/" class="catName">Решение проблем</a> <div class="clr"></div> </li> </ul> <div> </div> <div class="mb40 clear clearfix"> </div> </div> <div class="fr width300"> <div class="catTitle blackStyle"> <span class="fl noLink">Категории</span> <div class="clr"></div> </div> <div class="mb40"> <ul class="medbeSidebarNav"> <li> <a href="/category/windows-10/">Windows 10</a> </li> <li> <a href="/category/tips-for-beginners/">Советы начинающим</a> </li> <li> <a href="/category/internet-tips/">Интернет-подсказки</a> </li> <li> <a href="/category/useful-programs/">Полезные программы</a> </li> <li> <a href="/category/hardware-solutions/">Аппаратные решения</a> </li> <li> <a href="/category/configuring-wi-fi/">Настройка Wi-Fi</a> </li> <li> <a href="/category/solving-problems/">Решение проблем</a> </li> <li> <a href="/category/configuring-windows/">Настройка Windows</a> </li> </ul> </div> <div class="cancel-mb40"> </div> <div class="mb40 pr"> <div class="catTitle" data-click="y"> <span class="fl noLinknew">Видеоматериалы</span> <div class="frnew"></div> <div class="clr"></div> </div> <div class="medbeSidebarCarousel medbeArticle"> <ul> <li> <a href="/kak-otkryt-papku-v-komandnoi-stroke-na-windows-kak-otkryt-konsol-vypolnit-na/"> <img src="/uploads/99e89424f2adb11996a69d750d521e3c.jpg" alt="Как открыть консоль выполнить на windows 10" loading=lazy> <div class="playBg"></div> <p> Как открыть консоль выполнить на windows 10 </p> </a> <a href="/category/tips-for-beginners/" class="catName">Советы начинающим</a> </li> <!-- /next_post --> </ul> </div> </div> <div class="cancel-mb40"> </div> <div class="mb40"> <div class="mb40"> <div class="catTitle" data-click="y"> <span class="fl noLinknew">Популярное</span> <div class="frnew"></div> <div class="clr"></div> </div> <ul class="medbeArticle sidebarEvents"> <li> <a href="/peremeshchenie-profilya-polzovatelya-standartnymi-sredstvami-windows-kak-v-windows/"> <img src="/uploads/59fe7e573328d24871fe2935b9706c24.jpg" width="100px" alt="Как в Windows переместить папки пользователя на другой локальный диск?" loading=lazy> <div class="info"> <span class="date">Аппаратные решения</span> </div> <div class="title"> Как в Windows переместить папки пользователя на другой локальный диск? </div> <div class="clr"></div> </a> </li> <li> <a href="/u-23-e-mail-elektronnaya-pochta-tema-elektronnaya-pochta-e-mail-komu-i-dlya-chego-neobhodim/"> <img src="/uploads/32b8f60fc6487ae047c6a42f3fb2a833.jpg" width="100px" alt="Тема: электронная почта (e-mail)" loading=lazy> <div class="info"> <span class="date">Решение проблем</span> </div> <div class="title"> Тема: электронная почта (e-mail) </div> <div class="clr"></div> </a> </li> <li> <a href="/street-storm-skachat-obnovlenie-radar-detektory-street-storm-obnovlenie-po-obnovlenie/"> <img src="/uploads/234b2558a611dbf47b0c26f903df5f0d.jpg" width="100px" alt="Радар детекторы Street Storm обновление ПО" loading=lazy> <div class="info"> <span class="date">Решение проблем</span> </div> <div class="title"> Радар детекторы Street Storm обновление ПО </div> <div class="clr"></div> </a> </li> </ul> </div> </div> <div class="cancel-mb40"> </div> <div class="mb40"> <div class="catTitle" data-click="y"> <span class="fl noLinknew">Новое</span> <div class="frnew"></div> <div class="clr"></div> </div> <ul class="medbeArticle clinicsCountry"> <li> <a href="/bolshaya-kolonka-jbl-perenosnaya-portativnaya-kolonka-jbl-xtreme-pochemu-vazhno/"> <img src="/uploads/55aaef5f4bd5a6ba7762845849da826f.jpg" width="100px" alt="Портативная колонка JBL Xtreme" loading=lazy> <div class="title"> Портативная колонка JBL Xtreme </div> <div class="clr"></div> </a> </li> <li> <a href="/ne-rabotaet-perednii-usb-3-0-ne-rabotayut-usb-porty-na-kompyutere-puti-resheniya/"> <img src="/uploads/518aef24f67a32ffc762c4f21d5e85e8.jpg" width="100px" alt="Не работает передний usb 3" loading=lazy> <div class="title"> Не работает передний usb 3 </div> <div class="clr"></div> </a> </li> <li> <a href="/adobe-premiere-pro-obzor-programmy-chto-takoe-premiere-pro-trebuetsya-li/"> <img src="/uploads/b04d975347b64d93e62986431908dad6.jpg" width="100px" alt="Adobe premiere pro обзор программы" loading=lazy> <div class="title"> Adobe premiere pro обзор программы </div> <div class="clr"></div> </a> </li> <li> <a href="/skachat-programmu-dlya-remonta-sistemy-kompyutera-i-noutbuka/"> <img src="/uploads/d20fca631f1e5da11c7c4b6f4e938b70.jpg" width="100px" alt="Программы для восстановления системы" loading=lazy> <div class="title"> Программы для восстановления системы </div> <div class="clr"></div> </a> </li> <li> <a href="/windows-registraciya-failov-s-rasshireniem-dll-i-ocx-neskolko-sposobov/"> <img src="/uploads/ee68d4ebcb7b7883f88f35fd1163a207.jpg" width="100px" alt="Windows Регистрация файлов с расширением *" loading=lazy> <div class="title"> Windows Регистрация файлов с расширением * </div> <div class="clr"></div> </a> </li> </ul> </div> </div> </div> <div class="clr"></div> <div class="clr mb42-"></div> </main> </div> <footer class="footer"> <div class="footerWrap"> <ul class="footNav"> <li> <a href="/category/windows-10/">Windows 10</a> </li> <li> <a href="/category/tips-for-beginners/">Советы начинающим</a> </li> <li> <a href="/category/internet-tips/">Интернет-подсказки</a> </li> <li> <a href="/category/useful-programs/">Полезные программы</a> </li> </ul> <ul class="footNav mr0"> <li> <a href="/category/windows-10/">Windows 10</a> </li> <li> <a href="/category/tips-for-beginners/">Советы начинающим</a> </li> <li> <a href="/category/internet-tips/">Интернет-подсказки</a> </li> <li> <a href="/category/useful-programs/">Полезные программы</a> </li> </ul> <div class="footSep"></div> <div class="fl width405"> <div class="medbeWarning" style="font-size: 10px;"> Советы пользователям компьютера <p></p> <br /> </div> <div style="position:absolute; top:50px; right:15px; width:300px;"> <noindex> <br /> </noindex> </div> </div> <div class="footSep"></div> <div class="fl "> <div class="copyright"> <br /> <noindex> <div id="liv"> </div> <br> </noindex></div> <div style="position:absolute; top:50px; right:15px; width:300px;"> <noindex> <br /> </noindex> </div> </div> <div id="onTop"></div> <div class="clr"></div> <div class="links"></div> <div class="clr"></div> </div> </footer> <div class="overlay"></div> <div style="display: none;" id="ajax_result"></div> <div class="modal fade" id="send_message" tabindex="-1" role="dialog" aria-labelledby="message" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <a href="#" class="close" data-dismiss="modal" aria-hidden="true"></a> </div> <div class="modal-body"> <form action="/materials/sakharnyy-diabet/preparaty-insulina-i-insulinoterapiya/" method="POST"> <input type="hidden" name="sessid" id="sessid" value="190649912f2d5ccc3e7496471b00b5c2" /> <input name="head" type="text" placeholder="Тема" value=""> <textarea name="message" placeholder="Сообщения"></textarea> <input type="hidden" name="PARAMS_HASH" value="2d477b672b0c8e6bb03d8fa4ffc011a9"> <input type="submit" class="btn" name="submit" value="Отправить"> </form> </div> </div> </div> </div> <script type="text/javascript" data-skip-moving="true"> (function(w, d, n) { var cl = "bx-core"; var ht = d.documentElement; var htc = ht ? ht.className : undefined; if (htc === undefined || htc.indexOf(cl) !== -1) { return; } var ua = n.userAgent; if (/(iPad;)|(iPhone;)/i.test(ua)) { cl += " bx-ios"; } else if (/Android/i.test(ua)) { cl += " bx-android"; } cl += (/(ipad|iphone|android|mobile|touch)/i.test(ua) ? " bx-touch" : " bx-no-touch"); cl += w.devicePixelRatio && w.devicePixelRatio >= 2 ? " bx-retina" : " bx-no-retina"; var ieVersion = -1; if (/AppleWebKit/.test(ua)) { cl += " bx-chrome"; } else if ((ieVersion = getIeVersion()) > 0) { cl += " bx-ie bx-ie" + ieVersion; if (ieVersion > 7 && ieVersion < 10 && !isDoctype()) { cl += " bx-quirks"; } } else if (/Opera/.test(ua)) { cl += " bx-opera"; } else if (/Gecko/.test(ua)) { cl += " bx-firefox"; } if (/Macintosh/i.test(ua)) { cl += " bx-mac"; } ht.className = htc ? htc + " " + cl : cl; function isDoctype() { if (d.compatMode) { return d.compatMode == "CSS1Compat"; } return d.documentElement && d.documentElement.clientHeight; } function getIeVersion() { if (/Opera/i.test(ua) || /Webkit/i.test(ua) || /Firefox/i.test(ua) || /Chrome/i.test(ua)) { return -1; } var rv = -1; if (!!(w.MSStream) && !(w.ActiveXObject) && ("ActiveXObject" in w)) { rv = 11; } else if (!!d.documentMode && d.documentMode >= 10) { rv = 10; } else if (!!d.documentMode && d.documentMode >= 9) { rv = 9; } else if (d.attachEvent && !/Opera/.test(ua)) { rv = 8; } if (rv == -1 || rv == 8) { var re; if (n.appName == "Microsoft Internet Explorer") { re = new RegExp("MSIE ([0-9]+[\.0-9]*)"); if (re.exec(ua) != null) { rv = parseFloat(RegExp.$1); } } else if (n.appName == "Netscape") { rv = 11; re = new RegExp("Trident/.*rv:([0-9]+[\.0-9]*)"); if (re.exec(ua) != null) { rv = parseFloat(RegExp.$1); } } } return rv; } })(window, document, navigator); </script> <link href="/bitrix/cache/css/s2/medbe4_new/kernel_main/kernel_main.css?151557967426562" type="text/css" rel="stylesheet" /> <link href="/bitrix/cache/css/s2/medbe4_new/page_7b72513555721c1b5733d9b22d6efb9b/page_7b72513555721c1b5733d9b22d6efb9b.css?15155796623852" type="text/css" rel="stylesheet" /> <link href="/bitrix/cache/css/s2/medbe4_new/template_fa4e83195cbc9d75f36051d9e26d67c6/template_fa4e83195cbc9d75f36051d9e26d67c6.css?1515579660217752" type="text/css" data-template-style="true" rel="stylesheet" /> <link media="all" href="/local/templates/medbe4_new/css/responsive.css?sd" rel="stylesheet" type="text/css" /> <!--[if lt IE 9]><![endif]--> <script type="text/javascript"> if (!window.BX) window.BX = {}; if (!window.BX.message) window.BX.message = function(mess) { if (typeof mess == 'object') for (var i in mess) BX.message[i] = mess[i]; return true; }; </script> <script type="text/javascript"> (window.BX || top.BX).message({ 'JS_CORE_LOADING': 'Загрузка...', 'JS_CORE_NO_DATA': '- Нет данных -', 'JS_CORE_WINDOW_CLOSE': 'Закрыть', 'JS_CORE_WINDOW_EXPAND': 'Развернуть', 'JS_CORE_WINDOW_NARROW': 'Свернуть в окно', 'JS_CORE_WINDOW_SAVE': 'Сохранить', 'JS_CORE_WINDOW_CANCEL': 'Отменить', 'JS_CORE_WINDOW_CONTINUE': 'Продолжить', 'JS_CORE_H': 'ч', 'JS_CORE_M': 'м', 'JS_CORE_S': 'с', 'JSADM_AI_HIDE_EXTRA': 'Скрыть лишние', 'JSADM_AI_ALL_NOTIF': 'Показать все', 'JSADM_AUTH_REQ': 'Требуется авторизация!', 'JS_CORE_WINDOW_AUTH': 'Войти', 'JS_CORE_IMAGE_FULL': 'Полный размер' }); </script> <script type="text/javascript"> (window.BX || top.BX).message({ 'LANGUAGE_ID': 'ru', 'FORMAT_DATE': 'DD.MM.YYYY', 'FORMAT_DATETIME': 'DD.MM.YYYY HH:MI:SS', 'COOKIE_PREFIX': 'BITRIX_SM', 'SERVER_TZ_OFFSET': '3600', 'SITE_ID': 's2', 'SITE_DIR': '/', 'USER_ID': '', 'SERVER_TIME': '1515581305', 'USER_TZ_OFFSET': '0', 'USER_TZ_AUTO': 'Y', 'bitrix_sessid': '190649912f2d5ccc3e7496471b00b5c2' }); </script> <script type="text/javascript" src="/bitrix/cache/js/s2/medbe4_new/kernel_main/kernel_main.js?1515579673298080"></script> <script type="text/javascript" src="/bitrix/js/main/core/core_db.min.js?14979660558699"></script> <script type="text/javascript" src="/bitrix/js/main/core/core_frame_cache.min.js?146900780711191"></script> <script type="text/javascript"> BX.setJSList(['/bitrix/js/main/core/core.js', '/bitrix/js/main/core/core_ajax.js', '/bitrix/js/main/json/json2.min.js', '/bitrix/js/main/core/core_ls.js', '/bitrix/js/main/core/core_fx.js', '/bitrix/js/main/core/core_popup.js', '/bitrix/js/main/session.js', '/bitrix/js/main/core/core_window.js', '/bitrix/js/main/core/core_date.js', '/bitrix/js/main/utils.js', '/local/templates/medbe4_new/js/jquery.js', '/local/templates/medbe4_new/js/jquery.jcarousel.min.js', '/local/templates/medbe4_new/js/jquery.formstyler.min.js', '/local/templates/medbe4_new/js/jquery.mCustomScrollbar.concat.min.js', '/local/templates/medbe4_new/js/modals.js', '/local/templates/medbe4_new/js/tabs.js', '/local/templates/medbe4_new/js/ontop.js', '/local/templates/medbe4_new/js/placeholder.min.js', '/media/js/scrollbar/jquery.mCustomScrollbar.concat.min.js', '/media/js/header.js', '/local/templates/medbe4_new/js/scripts.js', '/feedback/twin.js']); </script> <script> BX.ready(function() { $("[data-preload]").each(function(i, el) { $this = $(el); $this.load($this.data("preload"), function() { $this.find("form").addClass("js-form") }); }); $(document).on({ submit: function() { $this = $(this); var action = $this.attr("action"); var data = $this.serialize() + "&web_form_submit=Y"; $.post(action, data, function(data) { $this.closest("div").html(data); }) return false; } }, ".js-form"); }) </script> <script type="text/javascript" src="/bitrix/cache/js/s2/medbe4_new/template_a5d224f830c08eebc70bc5559ca1712e/template_a5d224f830c08eebc70bc5559ca1712e.js?1515579660221230"></script> <script> $(function() { if ('jcarousel' in $) { $('.medbeCarousel').jcarousel({ // Configuration goes here }); $('.medbeCarousel-prev').jcarouselControl({ target: '-=1' }); $('.medbeCarousel-next').jcarouselControl({ target: '+=1' }); $('.medbeSidebarCarousel').jcarousel({ // Configuration goes here }); $('.medbeSidebarCarousel-prev').jcarouselControl({ target: '-=1' }); $('.medbeSidebarCarousel-next').jcarouselControl({ target: '+=1' }); $(window).on("load resize", function() { var w = this.innerWidth; if ($('.medbeCarousel').hasClass('halfWidthCarousel')) { if (w > 1279) { c = 771; } else { c = 377; } } else { if (w > 1279) { c = 1160; } else { c = 780; } } $('.medbeCarousel').css('width', c + 'px'); }); } }); // Script (Fixed menu) // $(window).on("scroll load", function(){ // var w2 = this.innerWidth; // var top = $(window).scrollTop(); // if (top > 120) $('.mainNav > ul').css({ // 'max-width': '100%', // 'position': 'fixed', // 'top': 0 // } ); // else { // $('.mainNav > ul').css({ // 'position': 'relative', // 'max-width': 1280 // } ); // } // } ); jQuery(window).scroll(function() { topMain(); // on scroll }); topMain(); // on load window.topNavSmall = false; function topMain() { var _scrollTop = jQuery(document).scrollTop(); if (_scrollTop > 0) { jQuery('.mainNav').addClass('fixed'); window.topNavSmall = true; } if (window.topNavSmall === true && _scrollTop < 2) { jQuery('.mainNav').removeClass('fixed'); } } </script> <script> </script> <script> (function($) { $(function() { $('#pc_add_photo').styler({ filePlaceholder: 'Добавить фото перед статьей' }); $('input, select').styler(); }) })(jQuery) </script> <script> (function($) { $(window).load(function() { if ('mCustomScrollbar' in $) $(".medbeScrollBlock").mCustomScrollbar(); }); })(jQuery); </script> <script> $(document).ready(function() { $("#sorting_catalog").change(function() { $("#form_for_sorting_catalog").submit(); }); }); </script> <script> $(document).ready(function() { $('.catTitle').click(function() { if ($(this).data("click") != "y") { $(this).parents('.doctorMat').toggleClass('hidden'); return false } }); }); </script> <script> $(document).ready(function() { $('input, textarea').on('focus blur', function() { var placeholder = $(this).attr('placeholder'); if ($(this).val() == placeholder) { $(this).val(''); } else if ($(this).val() == '') { $(this).val(placeholder); }; }); }); </script> <script> $(document).ready(function() { //Placeholder $('input[placeholder], textarea[placeholder]').placeholder(); }); </script> <script type="text/javascript"> function slyLink() { var istS = 'Источник:'; var copyR = '© usercpu.ru'; var body_element = document.getElementsByTagName('body')[0]; var choose; choose = window.getSelection(); var myLink = document.location.href; var authorLink = "<br /><br />" + istS + ' ' + "<a href='" + myLink + "'>" + myLink + "</a><br />" + copyR; var copytext = choose + authorLink; var addDiv = document.createElement('div'); addDiv.style.position = 'absolute'; addDiv.style.left = '-99999px'; body_element.appendChild(addDiv); addDiv.innerHTML = copytext; choose.selectAllChildren(addDiv); window.setTimeout(function() { body_element.removeChild(addDiv); }, 0); } document.oncopy = slyLink; </script> <script> $(function() { /*$(document).on("click", ".js-open-menu-a", function(){ $("#mainNav").slideToggle(200); } );*/ /* $(document).on({ click: function(){ $(this).siblings("nav").slideToggle(200); } , /!*touchend: function(){ $(this).siblings("nav").slideToggle(200); } *!/ } ,".js-open-menu");*/ }); </script> <script> var busy = false; $(function() { $("#infinity-next-page").addClass("btn").addClass("btn-blue"); $(document).on({ click: function() { if (busy) return false; console.log("1"); $("#nextWrap").find("a").css("opacity", 0.5); busy = true; $.post($(this).attr("href") + "&ajaxNovinki=Y", function(data) { busy = false $(".js-novinki").html($(".js-novinki").html() + data.html); $("#nextWrap").html(data.next); $("#infinity-next-page").addClass("btn").addClass("btn-blue"); //else $("#nextWrap").hide(); }, "json"); return false; } }, "#infinity-next-page"); }); </script> <script> $(document).ready(function() { $("#headfbwin, #feed").click(function() { $(".quest_form").show(); $('input, select').styler(); dh = $(document).height() + "; " + $(".quest_form").height(); h = ($(document).height() / 2) * -1; $(".quest_form").css("bottom", h + "px"); $(".overlay").show(); $(".q_form_close").click(function() { $(".quest_form").hide(); $(".overlay").hide(); }); $(".close2").click(function() { $(".oki").hide(); $(".overlay").hide(); }); $(".overlay").click(function() { $(".quest_form").hide(); $(".oki").hide(); $(".overlay").hide(); }); }); }); </script> <script> function selectHandler() { var $menu = $('.news-categories__list'); var $current = $('.news-categories__current'); var width = 0; if ($menu.outerWidth() > $current.outerWidth()) { $current.width($menu.outerWidth()); $menu.width($menu.outerWidth()); } $('.news-categories__current').click(function() { $menu.toggleClass('active'); }); $('body').click(function(e) { var $target = $(e.target); if (!$target.parents('.news-categories').length) $menu.removeClass('active'); }); $('.news-categories__list > ul').mCustomScrollbar({ theme: 'rounded', scrollInertia: 200 }); $('ul.tabs').delegate('li:not(.current)', 'click', function() { $(this).addClass('current').siblings().removeClass('current') .parents('div.section').find('div.box').hide().eq($(this).index()).fadeIn(150); }) } if (window.frameCacheVars !== undefined) { BX.addCustomEvent("onFrameDataReceived", function(json) { selectHandler(); }); } else { BX.ready(function() { selectHandler(); }); } </script> <script async src="/js/html5.js"></script> <script src="/local/templates/medbe4_new/components/bitrix/form.result.new/free_cons/_script.js?dsss" type="text/javascript"></script> </body> </html>