【问题标题】:jQuery $.post fires twice?jQuery $.post 触发两次?
【发布时间】:2010-07-16 18:15:10
【问题描述】:

我有这段代码,根据 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 中的一个错误。为什么?因为它不仅发生在我的页面上,而且发生在其他页面上。如果我不断刷新页面,大约前 10 次 navigator.geolocation.getCurrentPosition 会触发回调函数。但是,在某个时候,它会停止这样做。一旦达到这一点,它就不适用于任何其他使用 getCurrentPosition 的网站。而且这个问题在 Chrome 甚至 IE 上都不会发生。搜索谷歌,我发现了这个:

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

【问题讨论】:

  • 如果你告诉这个代码块是如何被调用的,它可能会有所帮助。而问题可能出在你使用getCurrerentPosition查看这篇文章stackoverflow.com/questions/2707191/…
  • 我相信我正确使用 getCurrentPosition .. 至少根据您提供的链接中的答案。但是,得到这个。我将此代码放入某个随机网页(任何网页)上的 Firebug 命令行: navigator.geolocation.getCurrentPosition(function() { alert('Position received'); }); 40 秒内什么都没有发生,然后我的消息出现了。我刚刚尝试了 Chrome,我根本没有遇到这个问题。

标签: javascript jquery post geolocation


【解决方案1】:

听起来代码可能在页面完成加载之前被调用 - 因此console.log 可能尚未初始化。

您的代码是否包含在某种document.ready 中,例如

$(函数 () { if (navigator.geolocation) { ... } });

只是猜测。需要更多地了解代码似乎更适合它的上下文。

希望能有所帮助,祝你好运。

【讨论】:

  • 该代码是函数队列的一部分,在文档准备就绪后被调用一次(实际上是在相当长的一段时间后)。
猜你喜欢
  • 2011-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-06
  • 2013-01-22
相关资源
最近更新 更多