javascript - 将参数传递给 json_callback 函数

标签 javascript json jsonp

我正在使用来自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是某种短标识符,那么这是可以的,如果它来自用户输入,那么它并不适合在函数名称中使用。您在名称属性中使用,所以我认为这没问题。

关于javascript - 将参数传递给 json_callback 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25160893/

相关文章:

java - 如何在 RESTEasy 中启用 JSONP?

javascript - 如何获取当前页面的 ID 或在 WordPress 中发帖?

javascript - 检测客户端是否使用 HTML5 Youtube 播放器

json - 无法正确读取处理 Ajax 调用的 Cake PHP Controller 函数发送的 json 编码的成功/失败状态

json - 解码或转义\u00f0\u009f\u0091\u008d 到 👍

javascript - 如何在等待多个异步 JSONP 回调时显示加载消息?

javascript - 如何根据父id和级别[ag-grid]对行类别数据进行排序

javascript - 提取中的 Imacros Javascript Eval 删除部分文本

JavaScript - JSON数据结构的构建 - 如何使用变量值更改键名

javascript - Facebook graph api JSONP格式,第一行的/* */是什么意思?