2010-06-13 1 views
4

Можно создать дубликат:
Please explain JSONPВ чем разница между JSON и JSONP?

Например, в документации JQuery Я считаю, как JSON и JSONP упоминается. В чем же разница? Как я могу видеть, что это? Какой из них нужно использовать для чего?

И что генерирует функция PHP json_encode?

+1

Для основных/тонких отличий, wikipedia - отличный ресурс здесь: http://en.wikipedia.org/wiki/JSON#JSONP –

+1

См. [Пожалуйста, объясните JSONP] (http://stackoverflow.com/questions/ 2067472/пожалуйста, объясни-JSONP) –

ответ

6

JSON - это простой формат данных. JSONP - это методология для использования этого формата с кросс-доменными ajax запросами, хотя они не попадают на Same Origin Policy вопросов. В принципе, идея состоит в том, что вместо того, чтобы использовать ajax для запроса данных, закодированных JSON, вы добавляете тег сценария на свою страницу, который загружает данные как скрипт JavaScript и делает обратный вызов вашему коду, говоря «Вот данные». Это работает, потому что «начало», применяемое к сценариям JavaScript, является источником документа, а не сценарий, что означает, что он может получить доступ к вашему коду, чтобы вызвать обратный вызов.

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

См. Также CORS, который может использоваться для этого вместо этого, когда мы идем вперед, но который еще не поддерживается хорошо в IE (IE7 и ниже его вообще нет, IE8 имеет его, но требует, чтобы клиентский код делает специальные вещи: Chrome, Firefox и т. д., и не требуют, чтобы клиентский код делал что-то особенное).