Что такое Net Framework для Windows XP и как его установить
Microsoft .NET Framework — это программная среда, которая поддерживает создание и выполнение других настольных и...
Кто программирует AJAX-приложения, часто сталкивается с задачей передачи параметров из PHP или другого языка программирования в JavaScript. Обычно при этом передаются данные из базы данных, доступ к которым имеет только серверный скрипт. Как отобразить их на клиентском компьютере, не перезагружая страницу? Об этом и написана эта статья.
Скажем пару слов о JSON (JavaScript Object Notation). Это текстовый протокол обмена данными, чем-то похожий на более привычный XML, но данные записываются в нем более компактно. Изначально он был разработан для нужд JavaScript (отсюда и получил свое название), но в данное время используется более широко.
Например, если мы хотим записать массив из PHP в JSON, то вот что из этого выйдет.
Исходный массив:
$n = array("Min" => 15, "Sec" => 44);
Этот же массив в формате JSON:
{"Min":"15","Sec":"44"}
Подробная нотация формата JSON и его приложения для различных языков программирования приведены на сайте http://www.json.org/
Рассмотрим простой пример, который будет состоять из двух файлов.
Первым файлом будет PHP-скрипт, который будет формировать JSON-запись, содержащую текущие минуты и секунды.
Вторым файлом будет HTML-страница, содержащая JavaScript с применением библиотеки jQuery, который будет с периодичностью в 1 секунду вызывать PHP-скрипт, получать запись JSON и выводить её содержимое в контейнер веб-страницы.
Файл №1. json.phpВ первой строке файла в функции header() мы задаем формат вывода JSON-записи, указываем, что документ является JavaScript"ом в кодировке UTF-8.
Во второй строке формируем ассоциативный массив с полями Min и Sec , в которые записываем текущие значения минут и секунд.
В третьей строке формируем JSON-запись из созданного массива.
Внимание! Функция json_encode() будет работать только в PHP версии 5.2 и выше.
Файл №2. example.html function json_example() { $.getJSON("json.php", function(data) { s = ""; $.each(data, function(key, val) { s = s + key+" => " + val + "В HTML-странице создается контейнер info . Функция json_example() , выполняющаяся 1 раз в секунду, использует jQuery-функцию $.getJSON() , с помощью которой получает JSON-запись с сервера, вызывая файл json.php. Далее, полученная JSON-запись разбивается на пары "ключ - значение" функцией $.each() , собирается в HTML-виде в переменную s и выводится в контейнер info , т.е. на экран в клиентском приложении.
Скачать исходные файлы примера (33 кб):
Важно!
Для того, чтобы примеры работали корректно, необходимо:
1. Все файлы должны быть записаны в кодировке UTF-8.
2. PHP-скрипты должны выполняться на веб-сервере, а не запускаться в браузере, как файлы.
У меня есть файл с расширением php. Здесь я прочитал информацию из базы данных. И мне нужно передать эти данные (ассоциированный массив) в js, которые также включены в этот файл php.
const arr = JSON.parse(""); console.log(arr);
array(5) { => array(7) { ["id"]=> string(1) "1"["question"]=> string(143) "The ______________ of a table is used to modify the design of a table, like modifying the name of a field or changing the data type of a field."["answer1"]=> string(14) "Datasheet View"["answer2"]=> string(11) "Desisn View"["answer3"]=> string(10) "Table View"["answer4"]=> string(11) "Wizard View"["true_answer"]=> string(1) "1"} => array(7) { ["id"]=> string(1) "2"["question"]=> string(83) "You can select multiple fields of a table in design view by using the ________ key."["answer1"]=> string(3) "Alt"["answer2"]=> string(8) "Spacebar"["answer3"]=> string(5) "Shift"["answer4"]=> string(4) "Ctrl"["true_answer"]=> string(1) "3"} ... Uncaught SyntaxError: missing) after argument listЗаключение:
Со стороны php все хорошо. Но когда мы пытаемся проанализировать этот массив в объекте js в части js — мы видим странную ошибку.
1) Все, что вам нужно сделать, это:
var arr = ; // alert(questions); // Output whatever is in the questions-variable
вопросы будут глобальной JS-переменной, которую вы можете достичь
из другого js.file или из js, встроенного в html-файл.
// As data in your html: