【问题标题】:setTimeout method not working with ajax functionsetTimeout 方法不适用于 ajax 函数
【发布时间】:2014-01-30 14:44:42
【问题描述】:

我正在开发一个测验门户。 问题以模块的形式设置,即一个模块包含5个问题,前4个是文本类型,第5个是图像类型。

当用户使用 register.php 注册时,他会被带到他登录的 index.php。

登录后,他会看到一个开始按钮。在按下开始按钮时,会调用 qstartfunc(),它使用 xmlHTTPrequest 打开 qstart.php 文件,该文件作为响应以 html 形式返回一个问题。

回复如下

Response=<script>
        setTimeout(qtime,30);
    </script>
    <div>
    <form name='question'  action='#'>
        <p>Question #8: Since independence, both development and non-development expenditures have increased; the increase in the former being a little more than in the other. Non-development expenditure involves<br />

 I.      interest payments<br />

 II.    subsidies<br />

 III.   defence<br />

 IV.    irrigation

 ?
        </p>
        <input id='a' type='radio' name='ansa' value='optiona' /> I, II<br />
        <input  id='b' type='radio' name='ansa' value='optionb' /> I<br />
        <input  id='c' type='radio' name='ansa' value='optionc' /> I, II, III<br />
        <input  id='d' type='radio' name='ansa' value='optiond' /> II, III, IV<br />
        <button onclick='qreturnfunc();return false;'>Submit</button>
    </form>
    </div>"

现在,如您所见,我在 setTimeout 方法中调用 qtime() 函数,在这种情况下有一些时间 30。 qtime() 方法调用 qreturnfunc() ,它以不同的问题返回,但响应格式相同。

但是 setTimeout 方法不起作用。这段代码是为了限制用户这个时间,否则它会自动提交。

除了 setTimeout 方法外,其他一切正常。

所以如果你们发现任何错误,请帮助我。甚至欢迎任何批评..

提前致谢。

完整包的链接是

https://drive.google.com/file/d/0B6KPYbSD1sxDU0k0QkU2YWVISWc/edit?usp=sharing

【问题讨论】:

    标签: javascript ajax settimeout


    【解决方案1】:

    你应该使用这个:

    <script>
    $.ready(function(){
            setTimeout(qtime,30);
    });
    </script>
    

    或者

     <script>
        window.load = function(){
                setTimeout(qtime,30);
        };
     </script>
    

    除非您无法确定脚本何时执行。

    【讨论】:

      【解决方案2】:

      不过,您实际上并没有说出正在发生的事情。

      不过我的猜测是您的计时器运行得很快,因为 JS 中的计时器以毫秒为单位递增。所以 Javascript 中的 30 秒是 30,000 毫秒。

      编辑:你在做什么调试?函数被调用了吗?你在检查错误吗?听起来您不知道自己的代码在做什么或没有在做什么,这可以通过简单地添加日志记录并查看您的代码获得的程度来获得。

      【讨论】:

      • 它应该在 30 毫秒后调用函数 qtime()(只是假设)并更改问题,但即使在那之后也没有更改问题。但是当按下提交按钮时,问题确实发生了变化。
      • 正确。但是您是否正在登录以查看是否调用了该函数?您是否正在检查控制台中的错误?你在做什么来跟踪你的代码的执行?
      猜你喜欢
      • 1970-01-01
      • 2021-04-24
      • 2012-09-03
      • 1970-01-01
      • 1970-01-01
      • 2017-05-16
      • 1970-01-01
      • 2019-07-25
      • 2015-07-02
      相关资源
      最近更新 更多