2010-05-10 12 views
43

Poniższy kod wyświetla mapę Google i wyniki wyszukiwania po wprowadzeniu adresu i naciśnięciu przycisku wysyłania. Grałem z nią, aby wypróbować i zmusić stronę do całkowitego odświeżenia lub ponownego załadowania po naciśnięciu przycisku przesyłania. Ale nie mogę sprawić, żeby działało prawidłowo. Ładuje wyniki "na stronie", ale chciałbym, aby strona całkowicie odświeżyła się po załadowaniu wyników, np. Po naciśnięciu przycisku Wstecz w przeglądarce. Mam nadzieję, że ma to sens.Jak zmusić stronę do odświeżenia lub ponownego załadowania w jQuery?

Myślę, że odpowiedź leży w tym wierszu kodu, ale nie znam jquery bardzo dobrze. Jest blisko dolnej części pełnego kodu poniżej.

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

Oto pełny kod poniżej. Każda pomoc będzie bardzo ceniona!

<?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>'; 

?> 

Odpowiedz

127

Do tego nie potrzebujesz jQuery. Wykorzystaj moc JavaScript.

window.location.reload() 

Edit: To jest kolejny przykład, gdzie oczekuje się, że jakiś „jQuery magia”, aby rozwiązać problemy bez myślenia o podstawach JavaScript, który jest często najprostszy, najszybszy i najbardziej bezpośredni sposób, aby coś zrobić.

+0

Nie działa dla window.parent.location.reload() –

+3

Zgodnie ze składnią, nie powinno to być: window.parent.window.location.reload()? –

+0

Sprawdziłem MozDevNet i okazało się, że okno "nadrzędny" jest w większości niedostępne z poziomu rodzica, należy użyć następującego atrybutu: https://developer.mozilla.org/en/DOM/window.opener . opener.locaten.reload() Cóż window.parent już zwraca odwołanie do okna nadrzędnego, ponieważ rodzic jest typu okno. –

19

zastąpić tę linię:

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

lub:

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

Hej dzięki chłopaki. Jestem totalnym noobem w tych rzeczach, ale kiedy zastąpiłem load(); z window.location.reload(); strona nieustannie odświeża się w momencie ładowania strony i nie zatrzymuje się. Czy możesz dać mi znać, gdzie dokonuję zmiany? – TimMac

+0

onsubmit = "searchLocations (\ ''. $ Categories."\ '); return false;” Pozbądź z "return false" –

+0

Dzięki, ale nadal jestem w nieskończonej pętli odświeżania zrobiłem tego prawa..

1

Można odświeżyć zdarzenia po dodaniu nowych stosując następujący kod: -release Zdarzenia -Set Źródło zdarzenia -R-renderowanie Wydarzenia

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

To rozwiąże problem