Ну, вот как я это сделал, на случай, если кому-то понадобится какой-то день:
var MyAPI =
{
jsonp: function(args)
{
var script = document.createElement("script");
var url = args.url + "?";
var generatedFunction = "jsonpCallback" + Math.round(Math.random() * 1000001);
window[generatedFunction] = function(response)
{
args.callback(eval("(" + response + ")"));
delete window[generatedFunction];
document.body.removeChild(document.getElementById(generatedFunction));
};
if (args.params)
{
url += "_r={";
for (var prop in args.params)
{
url += "\"" + prop + "\":\"" + args.params[prop] + "\",";
}
url = url.substr(0, url.length - 1);
url += "}&"
}
url += "_cb=" + generatedFunction;
script.src = url;
script.type = "text/javascript";
script.id = generatedFunction;
document.body.appendChild(script);
}
};
Называя его:
MyAPI.jsonp
({
url: "someurl",
params: { param1: "param1", param2: "param2" },
callback: function(response)
{
alert(response);
}
});