2017-05-04 73 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 –

相關問題