2010-05-10 196 views
43

当您输入地址并点击提交按钮时,下面的代码会显示Google地图和搜索结果。我一直在玩它尝试 ,并强制页面完全刷新或重新加载,一旦你点击提交按钮。但我无法让它正常工作。它将结果加载到“页面中”,但是当结果加载时,例如当您点击浏览器上的后退按钮时,我希望页面完全刷新。希望这是有道理的。如何在jQuery中强制页面刷新或重新加载?

我认为答案在于这一行代码,但我不太了解jquery。它接近下面完整代码的底部。

<script type="text/javascript"> 
(function($) { 
    $(document).ready(function() { 
     load();'; 

以下是下面的完整代码。任何帮助将不胜感激!

<?php 
/* 
SimpleMap Plugin 
display-map.php: Displays the Google Map and search results 
*/ 
$to_display = ''; 

if ($options['display_search'] == 'show') { 
$to_display .= ' 
<div id="map_search" style="width: '.$options['map_width'].';"> 
    <a name="map_top"></a> 
    <form onsubmit="searchLocations(\''.$categories.'\'); return false;"   name="searchForm" id="searchForm"  action="http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'].'"> 
     <input type="text" id="addressInput" name="addressInput" class="address"  />&nbsp; 
     <select name="radiusSelect" id="radiusSelect">'; 

      $default_radius = $options['default_radius']; 
      unset($selected_radius); 
      $selected_radius[$default_radius] = ' selected="selected"'; 

      foreach ($search_radii as $value) { 
        $r = (int)$value; 
        $to_display .= '<option valu   e="'.$value.'"'.$selected_radius[$r].'>'.$value.' '.$options['units']."</option>\n"; 
      } 

$to_display .= '  
     </select>&nbsp; 
     <input type="submit" value="'.__('Search', 'SimpleMap').'"  id="addressSubmit" class="submit" /> 
     <p>'.__('Please enter an address or search term in the box above.',  'SimpleMap').'</p> 
    </form> 
</div>'; 
} 
if ($options['powered_by'] == 'show') { 
    $to_display .= '<div id="powered_by_simplemap">'.sprintf(__('Powered by %s  SimpleMap', 'SimpleMap'),'<a href="http://simplemap-plugin.com/"  target="_blank">').'</a></div>'; 
} 

$to_display .= ' 
<div id="map" style="width: '.$options['map_width'].'; height:  '.$options['map_height'].';"></div> 

<div id="results" style="width: '.$options['map_width'].';"></div> 

<script type="text/javascript"> 
(function($) { 
    $(document).ready(function() { 
     load();';  

     if ($options['autoload'] == 'some') { 
      $to_display .= 'var autoLatLng = new GLatLng(default_lat,  default_lng); 
      searchLocationsNear(autoLatLng, autoLatLng.lat() + ", " +  autoLatLng.lng(), "auto", "'.$options['lock_default_location'].'", "'.$categories.'");'; 
     } 

     else if ($options['autoload'] == 'all') { 
      $to_display .= 'var autoLatLng = new GLatLng(default_lat,  default_lng); 
      searchLocationsNear(autoLatLng, autoLatLng.lat() + ", " +  autoLatLng.lng(), "auto_all", "'.$options['lock_default_location'].'",  "'.$categories.'");'; 
     } 

$to_display .= ' 
    }); 
})(jQuery); 
</script>'; 

?> 

回答

127

你不需要jQuery来做到这一点。拥抱JavaScript的力量。

window.location.reload() 

编辑:这是一些“神奇的jQuery”有望解决问题没有JavaScript的基本面是经常做一些最简单,最快,最直接的方式思维的另一个例子。

+0

不适用于window.parent.location.reload() – 2012-01-30 15:57:49

+3

根据语法,不会是:window.parent.window.location.reload()? – 2012-01-30 16:10:32

+0

我检查了MozDevNet并发现,“父”窗口大多不能通过父母访问,您必须使用以下属性:https://developer.mozilla.org/en/DOM/window.opener 窗口。 opener.locaten.reload() 那么window.parent已经返回父窗口的引用,因为父窗口是类型的。 – 2012-01-31 08:41:21

19

替换该行:

$("#someElement").click(function() { 
    window.location.href = window.location.href; 
}); 

或:

$("#someElement").click(function() { 
    window.location.reload(); 
}); 
+0

嘿谢谢你们。我是这个东西的总noob,但是当我替换load();与window.location.reload();页面加载时页面不断刷新,并且不停止。你能让我知道我在哪里做出改变吗? – TimMac 2010-05-10 15:28:21

+0

onsubmit =“searchLocations(\''。$ categories。'\');返回false;” 摆脱‘返回false’ – 2010-05-10 15:32:19

+0

谢谢,但我仍然在一个无限循环刷新难道我这样做的权利:。 <脚本类型=‘文/ JavaScript的’> (功能($){ \t $(文件)。就绪(函数(){ \t \t window.location.reload();'; – TimMac 2010-05-10 15:39:37

6

或者更好

window.location.assign("relative or absolute address"); 

倾向于在所有浏览器的工作最好的和移动

1

替换:

$('#something').click(function() { 
    location.reload(); 
}); 
1

您可以通过将下面的代码添加新的后刷新事件: - 松开事件 -set事件来源 -Re渲染活动

$('#calendar').fullCalendar('removeEvents'); 
        $('#calendar').fullCalendar('addEventSource', YoureventSource);   
        $('#calendar').fullCalendar('rerenderEvents'); 

这将解决问题

相关问题