English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Jsonp (JSON with Padding) — это «модель использования» json, которая позволяет веб-странице из другого домена (сайта) получать данные, то есть читать данные через跨домен.
JSONP представляет собой заполненный JSON.
Из-за политики跨域, запрос файла из другого домена может вызвать проблемы.
Запрос внешнего скрипта из другого домена не вызывает этой проблемы.
JSONP использует это преимущество и использует<script>Используется тег, а не объект XMLHttpRequest для запроса файла.
<script src="jsonp_demo.php">
Файл на сервере (jsonp_demo.php) обертает результат в вызов функции:
<?php $myJSON = '{ "name":"Seagull", "age":32, "city":"New Delhi" }'; echo "myFunc($myJSON);"; ?>
Функция «myFunc» расположена на клиенте и может обрабатывать данные JSON:
function myFunc(myObj) { document.getElementById("output").innerHTML = myObj.name; }Проверьте, пожалуйста‹/›
JSON: JavaScript использует JSON (JavaScript Object Notation) для обмена данными через сеть. Он тщательно проверяет JSON данные, которые представляют собой просто строковый формат JavaScript объекта.
{"name":"Seagull", "age":22, "city":"New Delhi"}
JSONP: JSONP - это JSON с заполнителем. Заполнитель означает, что функция заключена в JSON и затем возвращена в запрос.
myFunc({ "name":"Seagull", "age":22, "city":"New Delhi" })
В HTML коде включен тег script. Источник тега script будет URL, из которого будут извлекаться данные. Web сервис позволяет指定回调 функцию. В URL в конце будет параметр callback.
Когда браузер встречает элемент script, он отправляет HTTP запрос по исходному URL.
Сервер отправляет ответ, содержащий JSON, заключенный в вызов функции.
Браузер анализирует строковый формат JSON ответа и преобразует его в объект JavaScript. Вызовет回调 функцию и передаст созданный объект ей.
В предыдущем примере функция "myFunc" выполняется при загрузке страницы в зависимости от места放置 тега script.
Но тег скрипта должен создаваться только по мере необходимости.
Ниже приведен пример, который создает и вставляет<script>Метка:
function createScriptDynamically() { var elem = document.createElement("script"); elem.src = "jsonp_demo.php"; document.body.appendChild(elem); }Проверьте, пожалуйста‹/›