2015-12-07 102 views
1

我試圖從JQuery函數中檢索數據,並將其傳遞到全局變量以與Google Maps一起使用。這些變量必須保持全局,否則Google地圖不能使用它們。我設法從AJAX url獲取所需的所有數據,並且它完美記錄,但僅在Jquery函數內。如果我將它記錄在它之外,它是不確定的。無論如何要將這些值傳遞給全局變量?如何將JQuery變量傳遞給全局變量

function displayMarkers() {  
    var latlng = new google.maps.LatLng(latitd, longtd); 
    var name = titleName; 
    createMarker(latlng, name);  
} 

var latitd; 
var longtd; 
var titleName;  

$(document).ready(function() { 
    $('#earthquakes').click(function() {  
     getQuakes(); 
    }); 

    function getQuakes() { 
     $.ajax({ 
      url: 'http://earthquake.usgs.gov/fdsnws/event/1/query?format=geojson&starttime=' + yesterDate + '&endtime=' + displayDate, 
      success: function(data) { 
       console.log(data); 
       $.each(data.features, function(key, val) { 
        var coord = val.geometry.coordinates; 
        locationD = { 
         latd: coord[0], 
         lngd: coord[1] 
        }; 
        latitd = locationD.latd; 
        longtd = locationD.lngd; 
        titleName = val.properties.title; 

        console.log(latitd, longtd); 
        console.log(titleName);  
       }); 
      }  
     });  
    }  
}); 
+1

把定義的功能外側Dom準備 –

+0

是的,你是錯誤地訪問它。只有在ajax成功之後,您纔會獲得經緯度值。然後在另一個函數中使用這些變量 –

+0

感謝您給我投票,但沒有一個「重複」問題與我的相關。 –

回答

1

您的代碼應該是這樣的

var latitd; 
var longtd; 
var titleName; 

$(document).ready(function() { 
    $('#earthquakes').click(function() { 
     getQuakes(); 
    }); 
}); 

function getQuakes() { 
    $.ajax({ 
     url: 'http://earthquake.usgs.gov/fdsnws/event/1/query?format=geojson&starttime=' + yesterDate + '&endtime=' + displayDate, 
     success: function (data) { 
      console.log(data); 
      $.each(data.features, function (key, val) { 
       var coord = val.geometry.coordinates; 
       locationD = { 
        latd: coord[0], 
        lngd: coord[1] 
       }; 
       latitd = locationD.latd; 
       longtd = locationD.lngd; 
       titleName = val.properties.title; 

       console.log(latitd, longtd); 
       console.log(titleName); 

       //Call this function to display here after success ajax 
       displayMarkers(); 
      }); 
     } 
    }); 
} 

function displayMarkers() { 
    var latlng = new google.maps.LatLng(latitd, longtd); 
    var name = titleName; 
    createMarker(latlng, name); 
} 
+0

不,它不會傳遞Ajax函數以外的值。它給我「未定義」 –

+0

請檢查displayMarkers();功能位置。我改變了那一個。 –

+1

現在它工作,非常感謝你救了我! –

-1

添加一個異步:假你的Ajax請求。

謝謝

+0

不會改變任何東西。我在url後添加了它:line –

+0

如果它不工作,您可以將latlang作爲參數傳遞給displayMarkers。 –