Да, JSONP немного отличается, когда он делает, так что ваш сервер должен поддерживать его.
JSON выглядит следующим образом:
{ "name": "value" }
В то время как JSONP выглядит следующим образом:
functionName({ "name": "value" });
Если все, что вы используете, поддерживает это вы охвачены, но это не то же самое, как поддержка только JSON. Когда сервер получает запрос, например: http://example.com/json?callback=functionName
, выше, что вы должны вынести, потому что, как она выглядит на странице это:
<script type="text/javascript" src="http://example.com/json?callback=functionName"></script>
Это означает то, что работает должен быть возвращен, в качестве иллюстрации, это справедливо:
<script type="text/javascript">
functionName({ "name": "value" });
</script>
Если ваш сервер не поддержка JSONP это будет фактически это:
<script type="text/javascript">
{ "name": "value" }
</script>
... и вы получите синтаксические ошибки, поскольку это недействительный JavaScript.
и ваш код js должен реализовать functionName? Нужно ли оценивать json для получения объектов js? – hvgotcodes
@hvgotcodes - Да, клиент имеет эту функцию (например, jQuery по умолчанию создает динамически). Это JSON передается функции (JSON - это действительная объектная нотация, просто ее подмножество), поэтому не нужно выполнять 'eval()'. –
Я не понимаю, почему вам не нужно его оценивать. Независимо от jsonp, большинство js-библиотек eval json возвращаются через xhrs для получения реальных js-объектов, которые представляет json? – hvgotcodes