Как сделать запрос JSONP из Javascript без JQuery? - PullRequest
117 голосов
/ 26 мая 2011

Можно ли сделать междоменный запрос JSONP в JavaScript без использования jQuery или другой внешней библиотеки?Я хотел бы использовать сам JavaScript, а затем проанализировать данные и сделать его объектом, чтобы я мог его использовать.Должен ли я использовать внешнюю библиотеку?Если нет, то как я могу это сделать?

Ответы [ 12 ]

0 голосов
/ 19 марта 2018

Если вы используете ES6 с NPM, вы можете попробовать узел модуля "fetch-jsonp".Fetch API Обеспечивает поддержку для выполнения вызова JsonP как обычного вызова XHR.

Предварительное условие: вы должны использовать isomorphic-fetch модуль узла в вашем стеке.

0 голосов
/ 15 апреля 2015
/**
 * Get JSONP data for cross-domain AJAX requests
 * @private
 * @link http://cameronspear.com/blog/exactly-what-is-jsonp/
 * @param  {String} url      The URL of the JSON request
 * @param  {String} callback The name of the callback to run on load
 */
var loadJSONP = function ( url, callback ) {

    // Create script with url and callback (if specified)
    var ref = window.document.getElementsByTagName( 'script' )[ 0 ];
    var script = window.document.createElement( 'script' );
    script.src = url + (url.indexOf( '?' ) + 1 ? '&' : '?') + 'callback=' + callback;

    // Insert script tag into the DOM (append to <head>)
    ref.parentNode.insertBefore( script, ref );

    // After the script is loaded (and executed), remove it
    script.onload = function () {
        this.remove();
    };

};

/** 
 * Example
 */

// Function to run on success
var logAPI = function ( data ) {
    console.log( data );
}

// Run request
loadJSONP( 'http://api.petfinder.com/shelter.getPets?format=json&key=12345&shelter=AA11', 'logAPI' );
...