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