[英]Passing parameter to json_callback function
我正在使用来自mapquest的逆地理定位方法,看起来像这样
function fieldVia_changed(a)
{
if (document.getElementsByName("via"+a)[0].value.trim().length!=0)
{
var via = document.getElementsByName("via"+a)[0].value ;
var strV = via.replace(/ |,/g, "+");
var s = document.createElement('script');
s.src = 'http://open.mapquestapi.com/nominatim/v1/search?q='+strV+'&json_callback=cbv&format=json&polygon=1&addressdetails=1';
document.getElementsByTagName('head')[0].appendChild(s);
}
}
请求结果在接受参数的函数cbv中处理
function cbv(json)
{
v_lat[0] = json[0].lat;
v_lng[0] = json[0].lon;
}
但是我需要能够将另一个参数从fieldVia_changed函数传递给cbv函数,以便我可以正确处理信息。 cbv函数定义类似于此函数cbv(json,a)。 我环顾四周,但找不到解决方案。 可能吗 ?
服务器端通常不会选择在JSONP系统中传递其他参数。 一种可能的解决方案是使用回调函数名称中的a
值,并在cbv()
函数之间的中间动态创建该函数,使其成为一种人,从而允许您将a
作为第二个参数传递。
function fieldVia_changed(a) {
if (document.getElementsByName("via" + a)[0].value.trim().length != 0) {
// dynamically create the function
window['cbv_' + a] = function (json) {
cbv(json, a);
};
var via = document.getElementsByName("via" + a)[0].value;
var strV = via.replace(/ |,/g, "+");
var s = document.createElement('script');
// call the function cbv_x
s.src = 'http://open.mapquestapi.com/nominatim/v1/search?q=' + strV + '&json_callback=cbv_' + a + '&format=json&polygon=1&addressdetails=1';
document.getElementsByTagName('head')[0].appendChild(s);
}
}
function cbv(json, a) {
v_lat[0] = json[0].lat;
v_lng[0] = json[0].lon;
console.log(a);
}
如果a
是某种短标识符,则可以,如果它来自用户输入,那么它实际上不适合在函数名称中使用。 您正在使用name属性,因此我认为这很好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.