我正在使用JSONP通过YQL获取Google(从JSON转换为JSONP)。 调用成功处理程序但是我希望能够为其他YQL调用使用相同的处理程序,并且能够在处理程序函数本身中识别使用了哪个脚本/数据源。有没有办法做到这一点?
var url = "http://query.yahooapis.com/v1/public/yql?q=SELECT%20*%20FROM%20json%20WHERE%20url%3D%22http%3A%2F%2Fmaps.googleapis.com%2Fmaps%2Fapi%2Fgeocode%2Fjson%3Flatlng%3D"+ latitude.toString()+ "%2C"+ longitude.toString() + "%26sensor%3Dtrue%22&format=json&diagnostics=true&callback=handler";
var script = document.createElement("script");
script.setAttribute("src", url);
document.getElementsByTagName("head")[0].appendChild(script);
答案 0 :(得分:1)
function yqlHandler(json) {
// ...
}
var uid = 1;
function makeQuery(query, data) {
var key = 'query-' + uid++;
yqlHandler[key] = data;
yqlHandler[key].handler = yqlHandler;
var url = "http://query.yahooapis.com/v1/public/yql?q=" + query + "&callback=yqlHandler." + key + ".handler";
// ... make the JSONP call
}
这样你就会得到this
指向你调用函数时使用的“数据”对象。当然还有其他类似的方法。