Обычно эти типы входов поступают с удаленных конечных точек, которые будет вызывать ваше приложение javascript. Способ, которым этот удаленный вызов обычно выполняется, заключается в объявлении функции с ожидаемым именем, а затем динамическом вводе тега script
в ваш DOM, указывающий его свойство src
удаленному ресурсу. Когда ресурс будет загружен, он вызовет вашу функцию, передав ее как параметр желаемого объекта.
Приведем пример. Предположим, что у вас есть удаленная конечная точка, которая возвращает данные, указанные в вашем вопросе.
Начните с определения функции:
window.someFunc = function(result) {
// result will represent the {"attr":"val"} object
alert(JSON.stringify(result));
};
, а затем просто создать script
элемент, который будет добавляться к вашему DOM и начать извлечение JSONP из удаленной конечной точки:
var s = document.createElement('script');
s.setAttribute('src', 'http://example.com/some_endpoint');
document.body.appendChild(s);
После скрипт успешно загружает удаленный ресурс, он будет вызывать someFunc
, который вы определили и передали ему объект результата.
Примечание: большинство конечных точек с поддержкой JSONP позволяют указать имя обратного вызова через некоторый параметр строки запроса: http://example.com/some_endpoint?callback=someFunc
, чтобы вы знали заранее, как назвать свою функцию.
Безопасное (г) решение является аргументом case с разрешенными функциями –
Как вы это оцениваете? Вы называете удаленный ресурс? Обычно вы определяете функцию 'someFunc' в вашем коде и затем передаете удаленный ресурс как атрибут' src' тега 'script', который вы бы динамически вводили в DOM. Тогда 'someFunc', который вы определили, будет автоматически вызван передачей в желаемом объекте в качестве параметра. –