Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery$.post触发两次?_Javascript_Jquery_Post_Geolocation - Fatal编程技术网

Javascript jQuery$.post触发两次?

Javascript jQuery$.post触发两次?,javascript,jquery,post,geolocation,Javascript,Jquery,Post,Geolocation,我有这段代码,出于某种原因,根据Firebug,我的$.post函数为“日志/天气”快速连续启动了两次。当我删除if navigator.geolocation时,它仍然会这样做,但是,如果我用类似console.log'test的东西替换$.post块,它只会触发一次 更奇怪的是,当我将console.log'test'放在$.post函数之前时,我的事件也只触发一次。我假设jQuery出现了一些奇怪的情况。有人有什么想法吗 if (navigator.geolocation) {

我有这段代码,出于某种原因,根据Firebug,我的$.post函数为“日志/天气”快速连续启动了两次。当我删除if navigator.geolocation时,它仍然会这样做,但是,如果我用类似console.log'test的东西替换$.post块,它只会触发一次

更奇怪的是,当我将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中的一个bug。为什么?因为它不仅发生在我的页面上,也发生在其他页面上。如果我一直刷新页面,navigator.geolocation.getCurrentPosition大约在前10次触发回调函数。然而,在某种程度上,它放弃了这样做。一旦达到这一点,它就不适用于任何其他使用getCurrentPosition的网站。这个问题在Chrome甚至IE上都不会发生。搜索谷歌时,我发现:


听起来代码可能是在页面加载完成之前调用的,因此console.log可能还没有初始化

你的代码被包装在一个文档中了吗

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

只是猜测而已。您需要更多地了解代码的上下文,在该上下文中,代码似乎有更好的切入点


希望这对您有所帮助,祝您好运。

该代码是函数队列的一部分,在文档准备就绪后实际上会调用一次。如果您告诉我们如何调用此代码块,可能会有所帮助。问题可能出在你使用getCurrentPosition的过程中。请检查本文。我相信我使用getCurrentPosition是正确的。。至少根据您提供的链接中的答案。不过,你要明白这一点。我把这段代码放在一些随机网页的Firebug命令行中,任何网页都可以:navigator.geolocation.getCurrentPositionfunction{alert'Position Govered';};40秒钟内什么也没发生,然后我的消息就出现了。我刚刚试过Chrome,我一点也没有遇到这个问题。