В данном случае это запрос JSONP.Вам просто нужно вызвать файл <script>
, когда он вам нужен.
<script src="/path/to/jsonp.js"></script>
Сценарий является исполняемым.Таким образом, вам не нужно использовать AJAX или любой другой способ для его вызова.И видите, как вы отправляете свой res
?Вы делаете это не правильно.Это потому, что у вас уже есть правильный вызов в ответе:
jQuery000000000000000_0000000000([{"isSuffix":false,"name":"name","title":"Mr"}]);
Приведенный выше код необходимо просто выполнить.Не используйте fetch()
.
Ваш полный код должен быть:
<script>
//Parsing function reads the 'title' data from the JSONp response
function jQuery000000000000000_0000000000(res) {
document.getElementById('title').innerHTML = res[0].title; //Error occurs here
}
</script>
<script src="/path/to/jsonp.js"></script>
Еще один способ сделать это внутри скрипта - использовать:
//Parsing function reads the 'title' data from the JSONp response
function jQuery000000000000000_0000000000(res) {
document.getElementById('title').innerHTML = res[0].title; //Error occurs here
}
$.getScript("/path/to/jsonp.js");
Содержимое в вышеуказанном файле автоматически вызывает функцию jQuery000000000000000_0000000000(res)
с допустимыми параметрами.:)
Подробное объяснение
В вашем текущем коде происходит то, что вы делаете AJAX-вызов для запроса JSONP, который вы не должныделать, и он делает ваш код следующим образом:
jQuery000000000000000_0000000000("jQuery000000000000000_0000000000([{"isSuffix":false,"name":"name","title":"Mr"}])");
Когда он пытается получить доступ к свойству title первого элемента, который является строкой, здесь это будет undefined
.Потому что строка не будет иметь свойства заголовка.
Вот стек:
jQuery000000000000000_0000000000(jQuery000000000000000_0000000000([{"isSuffix":false,"name":"name","title":"Mr"}]));
res = jQuery000000000000000_0000000000([{"isSuffix":false,"name":"name","title":"Mr"}]);
res[0] = undefined;
res[0].title = TypeError;
И вот почему вы получаете неопределенное значение ... :)