通过Ajax Post或其他方式存储变量

时间:2013-03-17 08:04:31

标签: jquery ajax google-maps

我想存储Google地图点击事件中的特定变量。我认为唯一的方法是使用某种类型的后Ajax调用。唯一的问题是我不知道如何在我的活动中整合表格。

 google.maps.event.addListener(marker, 'click', (function(marker, i) 
{
    return function() 
    {
        infowindow.setContent("<a href="+SID[i].innerHTML+">" 
                              + lis[i].innerHTML+" </a?>"+"<br/>"
                              + "<a href='#' id='directions' >Get Directions </a>");

        infowindow.open(map, marker);                   
    }   
})
    (marker, i));

所以当我点击一个特定的标记时,我想存储标记位置,这将是SID [i]。稍后在同一页面中,我将使用存储的变量。

由于

1 个答案:

答案 0 :(得分:1)

只要页面没有重新加载,您就可以使用以下任何一种方式存储变量:

  • Scoped JS变量
  • HTML5本地存储(持久性,也适用于页面刷新)
  • jQuery数据属性

范围内的JS变量示例

(function($)
{
    var storedMarker;

    $(function()
    {
        google.maps.event.addListener(marker, 'click', (function(marker, i)
        {
            storedMarker = marker;

            //continue with click logic
            ...
        })(marker, i));

        // Do something with stored marker
        $('.useStoredMarker').click(function(event)
        {
            if (storedMarker instanceof google.maps.Marker)
            {
                // storedMarker exists do something with it
            }
            else
            {
                // Marker doesnt exist show error or do nothing
            }
        });

    });

})(jQuery);

HTML 5本地存储空间

// Instead of storing variable in JS you can use this (HTML5 only)
localStorage.setItem("clickedMarker", marker);

// Retrieving it
var clickedMarker = localStorage.getItem("clickedMarker");

jQuery数据属性

// Assign the marker to a DOM elements data attribute
$('#clickedMarkers').data('marker', marker);

// Retrieving it
var clickedMarker = $('#clickedMarkers').data('marker');