2010-05-10 250 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'); 

這將解決問題

相關問題