drifterz28
12/31/2013 - 5:15 AM

cross domain jsonp.

cross domain jsonp.

    var jsonp = {
        // From http://javascriptweblog.wordpress.com/2010/11/29/json-and-jsonp/
        fetch: function(url, callback) {
            var url_get = url.split('?').pop();
            var get_prams = url_get.split('&');
            var params = {};
            for (var i = 0; i < get_prams.length; i++) {
                var new_param = get_prams[i].split('=');
                params[new_param[0]] = new_param[1];
            }
            var fn = params.callback || 'JSONPCallback';
            window[fn] = this.evalJSONP(callback);
            url = url.replace('=JSONPCallback', '=' + fn);
            var scriptTag = document.createElement('SCRIPT');
            scriptTag.src = url;
            document.getElementsByTagName('HEAD')[0].appendChild(scriptTag);
            scriptTag.addEventListener('error', function(e) {
                // just let me know there is an error but dont do anything
                console.log(e.type);
            });
        },
        evalJSONP: function(callback) {
            return function(data) {
                var validJSON = false;
                if (typeof data === 'string') {
                    validJSON = JSON.parse(data);
                } else {
                    validJSON = JSON.parse(JSON.stringify(data));
                }
                if (validJSON) {
                    callback(validJSON);
                } else {
                    throw('JSONP call returned invalid or empty JSON');
                }
            };
        }
    };
	
//example
jsonp.fetch('http://example.com/something-that-returns-json.json?callback=JSONPCallback', function(data) {
  console.log(data); // stuff returned
});