【问题标题】:Why is my AJAX request hanging after running for a while?为什么我的 AJAX 请求运行一段时间后挂起?
【发布时间】:2010-03-24 13:50:25
【问题描述】:

我写的页面上的 AJAX 调用在调用次数不定之后挂起。该页面在预设时间量(当前为 5 秒)后从我的服务器获取数据后发出请求,然后再次等待该时间量。当我将以下内容作为我的 AJAX 请求时:

myAjax = new Ajax.Request(
    url,
            {
                    method: 'get',
                    asynchronous: true,
                    url: url,
                    parameters: querystring,
                    onInteractive: document.getElementById('meh').innerHTML='Interactive',
                    onSuccess: processXML

            });

id 为“meh”的 div 会写入 Interactive 这个词,但 Success 条件永远不会执行(如果将 onSuccess 替换为 onComplete,则相同)。

那么为什么我的代码会这样做呢?谢谢。

【问题讨论】:

    标签: ajax prototypejs ajax.request


    【解决方案1】:

    onInteractive 事件处理程序不应该是对函数的引用吗?

    【讨论】:

    • 应该是,但它是作为调试放入其中的,用于测试 AJAX 状态。问题解决后,该行将被删除。
    • @JustJon:回复您的 cmets:不,它不适用于测试 Ajax 状态。这正是@pb 和@Rigobert 一直在告诉你的。它的目的是测试正在评估new Ajax.Request,但仅此而已。这实际上可能是您的脚本失败的全部原因,因为调用了onInteractive 事件,但它的值是一个字符串(评估document.getElementById('meh').innerHTML='Interactive' 的结果)而不是一个函数。这可能会导致异常或错误,从而破坏整个 Ajax 请求。
    【解决方案2】:

    正如pb所说,不应该是这样

    onInteractive: function(){
    document.getElementById('meh').innerHTML='Interactive'
    }
    

    【讨论】:

    • 该问题与该行无关。它是在尝试诊断问题并用于调试目的后添加的。
    猜你喜欢
    • 2014-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多