HTML не отображается в Firefox - PullRequest
5 голосов
/ 11 февраля 2011

Я пытаюсь вернуть страницу PHP через AJAX, и она всегда загружается в Chrome.В Firefox он загружается около 5% времени, в остальное время он загружается без ошибок без ошибок JS / PHP.Я просто повторяю прямой HTML без CSS.

Вот мой Ajax:

if(geo_position_js.init()){
            geo_position_js.getCurrentPosition(displayPosition,error_callback,{enableHighAccuracy:true,options:5000});
        }
        else{
            alert("Functionality not available");
        }

        function error_callback(p)
        {
            alert('error='+p.message);
        }       

    function displayPosition(loc) {
        var mylat = loc.coords.latitude;
        var mylong = loc.coords.longitude;
        $.ajax({
            type: "POST",
            url: "distancetest.php",
            data: "long="+mylong+"&lat="+mylat,
            success: function(html2){
                $('#locationinfo').html(html2);
                console.log(html);
           }
        });

    }

Мой PHP в основном делает это пару раз:

$query = "SELECT * FROM tbl_geo WHERE cat_id=1";
    $result = mysql_query ($query) or die(mysql_error());
    echo "<h2>Restaurants</h2>";
    while ($row = mysql_fetch_array($result)){
        if($row['lat'] != ''){
            $distance = distance($_POST['lat'], $_POST['long'], $row['lat'], $row['lng'], "k");
            if($distance < 2000){
                $attractions[] = array('name' => $row['name'], 'address' => $row['address'], 'distance' => $distance);
            }
        }
    }
    $attractions = array_sort($attractions,'distance');
    $attractions = array_values($attractions);
    for ($i = 0; $i <= 10; $i++) {
        if(isset($attractions[$i]['distance'])){
            echo 'You are '.$attractions[$i]['distance'].'km away from '.$attractions[$i]['name'].' at '.$attractions[$i]['address'].'<br/>';
        }
    }

Работает в некоторых браузерах, но ничего не отображает в других.Есть идеи?

ОБНОВЛЕНИЕ: Оказывается, это проблема геолокации в Firefox.Не удается получить позицию, но не возвращается к функции error_callback.Живой пример здесь: http://adamzwakk.com/geolocate/

Ответы [ 3 ]

0 голосов
/ 25 февраля 2011

Вы уверены, что ваш браузер поддерживает то, что вы делаете?

Попробуйте: http://html5demos.com/geo

Вы также можете скачать wireshark и проверить информацию, отправленную вами и возвращенную с сервера..

Хорошей практикой также является размещение пустой страницы php (просто отображение случайной строки) в том же каталоге, где вы хотите создать свой php, и посмотрите, работает ли он.На серверах под управлением Windows распространенной проблемой является то, что PHP можно настроить для работы в определенных каталогах, а из-за неправильной установки может произойти сбой в других.Каждый браузер по-разному обрабатывает сообщения об ошибках и предупреждения, поэтому, если он работает в Chrome, это не значит, что он работает во всем остальном.Вы пробовали с Safari и Opera?

0 голосов
/ 08 марта 2011

Используйте console.log () с осторожностью

Использование console.log () в вашем коде javascript вызывает исключение, когда firebug отключен или не установлен. (95% времени?)
Я написал небольшую функцию-оболочку "dump (var)" dump.js , которая проверяет, включен ли firebug, поэтому ее также безопасно использовать в рабочем коде.

PS: Я заметил:

 success: function(html2){
   $('#locationinfo').html(html2);
   console.log(html);
 }

Является ли переменная html определенной ранее или вы имели в виду html2.

0 голосов
/ 20 февраля 2011

Я открыл FireBug, и вы нажали на ссылку, чтобы найти мой адрес. Возвращено множество ссылок, говорящих «undefined». В FireBug он показывает, что ваш скрипт возвращает это:

<?xml version="1.0" encoding="utf-8" ?>
  <geoData>
    <restaurants>
    </place>
    </restaurants>
    <accommodations>
    </accommodations>
    <things>
    </things>
  </geoData>

Я сделал отступ, чтобы он выглядел лучше. Похоже, ваше приложение ничего не возвращает в XML. Вы также закрываете тег, который не открыт!

...