jQuery $ .post срабатывает дважды? - PullRequest
0 голосов
/ 16 июля 2010

У меня есть этот код, и по какой-то причине моя функция $ .post срабатывает два раза подряд (для 'журнала / погоды') согласно Firebug.Он все еще делает это, когда я удаляю «if (navigator.geolocation)», однако, если я заменяю блок $ .post чем-то вроде console.log ('test'), он срабатывает только один раз.

Что еще более странно, когда я помещаю console.log ('test') перед функцией $ .post, тогда мое событие также запускается только один раз.Я предполагаю, что что-то странное происходит с JQuery.У кого-нибудь есть какие-нибудь идеи?

if (navigator.geolocation)
    {
    navigator.geolocation.getCurrentPosition(function(position)
        {
        $.post('journal/weather', {latitude: position.coords.latitude, longitude: position.coords.longitude}, function(result)
            {
            if (typeof(result.current.temp) != 'undefined')
                {
                global.temperature = parseInt(result.current.temp, 10);
                global.temperature_slider.slider('value', global.temperature);
                }
            }, "json");
        });
    }

РЕДАКТИРОВАТЬ: Хорошо, все еще незнакомец, иногда он срабатывает дважды, иногда один раз.Как один и тот же фрагмент кода может давать разные результаты при каждом его выполнении?

РЕДАКТИРОВАТЬ 2: После некоторых экспериментов я думаю, что это ошибка в Firefox.Зачем?Потому что это происходит не только с моей страницей, но и с другими.Если я продолжу обновлять свою страницу, примерно первые 10 раз navigator.geolocation.getCurrentPosition запускает функцию обратного вызова.Тем не менее, в какой-то момент он прекращает это делать.И как только он достигнет этой точки, он не будет работать для любого другого веб-сайта, который использует getCurrentPosition.И эта проблема никогда не случается на Chrome или даже IE.Поиск в Google, я нашел это:

http://groups.google.com/group/mozilla.feedback.firefox/browse_thread/thread/fecc3fb0bad6d0b8

1 Ответ

0 голосов
/ 16 июля 2010

Похоже, код может быть вызван до того, как страница закончит загрузку - следовательно, console.log, возможно, еще не инициализируется.

Код вашего кода заключен в document.ready, например,

$ (function () { if (navigator.geolocation) { ... } });

Просто предположение. Нужно было бы больше узнать о контексте, в котором код выглядит лучше.

Надеюсь, что это помогает и удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...