2015-03-24 3 views
0

У меня есть простой сайт на основе AJAX, у меня есть такая же простая функция геолокации, которая перенаправляет пользователя на новую страницу, когда они нажимают кнопку.JS window.location на сайте AJAX

Это часть моей функции геолокации, которая перенаправляет пользователей, которые, как вы увидите, перенаправляют людей на страницу с именем weather.php;

function showPosition(position) { 
    window.location='weather.php?lat='+position.coords.latitude+'&long='+position.coords.longitude; 
} 

Проблема заключается в том, что он перенаправляет на страницу с помощью «традиционных» загрузку страницы и, таким образом, делает загрузку страниц AJAX Я выполнил устаревает.

Возможно ли изменить эту функцию и сделать ее удобной для AJAX?

Это полный код переадресации;

<button onclick="getLocation()">My Location</button> 

    <script> 

     var x = document.getElementById("message"); 

     function getLocation() { 

      if (navigator.geolocation) { 

       navigator.geolocation.getCurrentPosition(showPosition, showError); 

      } else { 

       x.innerHTML = "Geolocation is not supported by this browser."; 
      } 

     } 

     function showPosition(position) { 

      window.location='weather.php?lat='+position.coords.latitude+'&long='+position.coords.longitude; 

     } 

    <script> 

ответ

0

Вот как вы можете это сделать. Я даю вам простой пример веб-сайта, на котором страницы загружаются с помощью Ajax. Страница помещается в URL-адрес.

Не нравится: weather.php Lat = 50,452

Но как это: index.php? # 50,452

Дело в том: когда вы изменить что-нибудь прямо в #, страница не перезагружается , И все же, есть система, в которой URL запоминает страницу

Это не полный ответ на ваш вопрос, но я надеюсь, что это дает вам вдохновение вам нужно

pages.php

<?php 
switch(isset($_GET['p']) ? $_GET['p'] : '') { 
    default: 
    $content = 'This is the HOME page ...'; 
    break; 
    case 'calendar': 
    $content = 'calendar stuff ...'; 
    break; 
    case 'contact': 
    $content = 'contact stuff ...'; 
    break; 
} 
echo $content; 
?> 

index.php

<!DOCTYPE html> 
<html> 
<head> 
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
    <script> 
    // load page according to the url. 
    // We read the url, to the right hand side of the # (hash symbol) 
    var hash = window.location.hash; 
    var page = hash.substr(1); // this removes the first character (the #) 
    loadPage(page); 

    // triggered by the navigation. 
    function loadPage(page) { 
    getAjaxPage(page); 
    } 
    // this returns the content of a page 
    function getAjaxPage(page) { 
    switch (page) { 
     default: // = HOME page 
     var url = ''; 
     case 'calendar': 
     case 'contact': 
     var url = page; 
    } 
    $.ajax({ 
     url: 'pages.php', 
     data: { 
     p: url 
     }, 
     success: function(data) { 
     $('#content').html(data); 
     } 
    }) 
    } 
    </script> 
    <style> 
    #content { 
     margin: 15px; 
    } 
    </style> 
</head> 
<body> 
    <div id="nav"> 
    <a href="#" onclick="loadPage('')">Home</a> | 
    <a href="#calendar" onclick="loadPage('calendar')">Calendar</a> | 
    <a href="#contact" onclick="loadPage('contact')">Contact</a> | 
    </div> 
    <div id="content"></div> 
</body> 
</html> 

Ваша работа ... Вы Shou ld не перенаправляет клиента.
Это что-то вроде вещи Google Maps, верно? Каковы ваши намерения?

Почему вы не можете загрузить weather.php с помощью Ajax? Держу пари, что можешь.

Смежные вопросы