[英]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.