2017-05-04 59 views
-3

我要访问的脚本块以外的jQuery变量var address。我检查这个question但它没有工作对我来说也是如此。

$(document).ready(function(){ 
    var url = 'https://sandbox.xyz.com/api/search/'; 
    $("button").click(function(){ 
     var address = $("#address").val(); 
     $.getJSON(url+address, function(result){ 
      $.each(result, function(index, element){ 
       var address = element.address; 
      }); 
     }); 
    }); 
}); 

我怎么能在这里访问var address我jQuery的外块。

+0

@SLaks请你详细说明,任何提示或链接将是伟大的 – Arif

+0

http://blog.slaks.net/2015-01-04/async-method-patterns/ – SLaks

+0

你每次覆盖变量通过'$ .each'循环。如果你在函数之外访问它,它将只包含最后一个地址。 – Barmar

回答

0

要在较高范围内创建一个变量,您需要在该范围内声明该变量,并将其用于子范围。原理:

var address, 
    doStuff = function(param) { 
     // param holds address, when you call it from `$.each()` 
     console.log(param); 
    }; 
$(document).ready(function(){ 
    var url = 'https://sandbox.xyz.com/api/search/'; 
    $("button").click(function(){ 
     address = $("#address").val(); 
     $.getJSON(url+address, function(result){ 
      $.each(result, function(index, element){ 
       address = element.address; 
       doStuff(address); 
      }); 
     }); 
    }); 
}); 

address将等于$('#address').val()document.ready事件直到从$.getJSON()的响应。在响应之后,它仍将填充result集合中的最后一个值,因为您在每次迭代$.each()时重写其值。

如果你想在getJSON返回后使用address的值,你需要创建一个函数并从你的getJSON中调用它。更新我的例子。

+0

我尝试之前,但它不工作,你可以检查'console.log(地址)'块外,它是空的与我。 – Arif

+0

@Arif我想我明白你想要什么。你想调用一个函数来处理每个地址。看我更新的例子。 –

+0

是的,它现在在控制台上工作,但我想在另一个经纬度函数中使用它'var myLatlng = new google.maps.LatLng(Latitude,Longitude);'所以我应该把我的第二个函数包含在'doStuff'中 – Arif

-1

请试试这个

var address; 

$(document).ready(function(){ 
    var url = 'https://sandbox.xyz.com/api/search/'; 
    $("button").click(function(){ 
    var address = $("#address").val(); 
     $.getJSON(url+address, function(result){ 
      $.each(result, function(index, element){ 
       address = element.address; 
      }); 
     }); 
    }); 
}); 

在代码开始就声明一个变量将使得其所有以下代码和函数的全局范围。

+0

我之前曾尝试过但未与我合作过。 – Arif

+0

检查这一点。这里是工作codepen https://codepen.io/sajiddesigner/pen/JNrXrX –

相关问题