javascript 通过隐藏字段传递值

发布于 2024-10-08 05:08:05 字数 1086 浏览 2 评论 0原文

我有一个页面,每 x 秒使用

<meta http-equiv="refresh" content="60"/>

标签重新加载一次。页面上有一个谷歌地图,我需要记住刷新之间的缩放级别(和中心)。

这就是我所拥有的:

function initialize() {

    // initialize the map
    var latlng = new google.maps.LatLng(0, 0);
    var myOptions = {
      center: latlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

    myMarkers = new Array();    
    updateMarkers();


    cen = new google.maps.LatLng(-12.461334, 130.841904);
    map.setCenter(cen);
    zoomLevel = document.getElementById("zoomLevel").value;
    map.setZoom(parseInt(zoomLevel));
    google.maps.event.addListener(map, 'zoom_changed', function() {
        str = map.getZoom() + '';
        document.getElementById("zoomLevel").value = str;
    });
  }

所以,我有一个事件侦听器,它将在每次缩放更改后更新隐藏值 ZoomLevel。每次重新加载时,应从该值读取缩放级别。

<input type="hidden" name="zoomLevel" id="zoomLevel" value="4" />

但每次刷新后,缩放级别都会设置为 4。我做错了什么?

谢谢。

I have a page that reloads it self every x seconds with

<meta http-equiv="refresh" content="60"/>

tag. There is a google map on the page and I need to remember the zoom level (and center) between refreshes.

This is what I have:

function initialize() {

    // initialize the map
    var latlng = new google.maps.LatLng(0, 0);
    var myOptions = {
      center: latlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

    myMarkers = new Array();    
    updateMarkers();


    cen = new google.maps.LatLng(-12.461334, 130.841904);
    map.setCenter(cen);
    zoomLevel = document.getElementById("zoomLevel").value;
    map.setZoom(parseInt(zoomLevel));
    google.maps.event.addListener(map, 'zoom_changed', function() {
        str = map.getZoom() + '';
        document.getElementById("zoomLevel").value = str;
    });
  }

So, I have a event listener that will update a hidden value zoomLevel after each zoom change. On each reload zoom level should be read from that value.

<input type="hidden" name="zoomLevel" id="zoomLevel" value="4" />

But after each refresh the zoom level is set to 4. What am I doing wrong?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

你爱我像她 2024-10-15 05:08:05

元刷新不是回发,而是页面的实际清理请求。您有两种方法可以解决此问题:

  1. 首先停止刷新,这是您想出的一个糟糕的解决方案。使用ajax请求一张新地图并覆盖旧地图。
  2. 更糟糕的是,但保持了你奇怪的风格:使用 setTimeout 代替并调用 form.submit (或者构建 __doPostBack 链接,如果你使用的是 asp.网)。这样您就可以发出实际的发布请求。

The meta refresh isn't a postback, it's an actual clean request of the page. You have 2 ways to fix this:

  1. Stop refreshing in the first place, it's a horrible solution you came up with. Use ajax to request a new map and overwrite the old one in place.
  2. Worse, but maintains your weird style: use setTimeout instead and call form.submit (or build the __doPostBack link if you're using asp.net). This way you make an actual post request.
黎夕旧梦 2024-10-15 05:08:05

我相信解决方案就在您的指尖。事实上你根本不需要回发。只需安排initialize() 函数每60 秒调用一次即可。所以 -

  1. 删除自动刷新 META 标签;
  2. 添加一行类似:setInterval(initialize, 60000);在页面启动代码中

就是这样。

I believe that the solution is right at your fingertips. In fact you do not need to postback at all. Just schedule the initialize() function to be called every 60 seconds. So -

  1. Remove the auto-refresh META tag;
  2. Add a line something like: setInterval(initialize, 60000); in the page startup code

There you are.

谈下烟灰 2024-10-15 05:08:05

也许您可以使用 cookie 来记住页面的状态。

Maybe you can use cookies to remember the state of your page.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文