javascript - 仅在页面刷新时重新加载的进度条计时器

标签 javascript jquery progress

我们正在创建一个筛选工具,这是问题部分。问题下方有一个带有时间的进度条,但它仅填充进度条或在您重新加载页面时显示进度。

这是代码

public function screening(Request $request){

        $user_test = User_test::find(Session::get('user_test_id'));
        $test = $user_test->test;

        var_dump($user_test->questionsLeft());

        $time = floor((strtotime(date('Y-m-d H:i:s')) - strtotime($user_test->started_at))/60);

        if($test->time <= $time){
            $user_test->unanswered = array_sum($user_test->questionsLeft());
            $user_test->finished_at = date('Y-m-d H:i:s');
            $user_test->score = $user_test->calculateScore();
            $user_test->save();
            return Redirect::route('user.dashboard')->with('error', ['test timed out']);
        }

        //Get user test object
        $test = $user_test->test;

        $current = $test->test_subcategories()->sum('amount') - array_sum($user_test->questionsLeft()) + 1;

        //Get next question
        if(Session::get('question_id') == null){
            $question = $user_test->getNextQuestion();
            Session::flash('question_id', $question->id);
        } else if(!$user_test->answers()->where('question_id', Session::get('question_id'))->exists()){
            $question = Question::find(Session::get('question_id'));
        } else {
            $question = $user_test->getNextQuestion();
            Session::flash('question_id', $question->id);
        }

        // Calculate time
        if($user_test->started_at == null){
            return Redirect::route('user.dashboard');
        } else {
            $time = round((strtotime(date('Y-m-d H:i:s')) - strtotime($user_test->started_at))/60);
        }

        $lang = Sentinel::check()->text_lang_code;

        return view('screening.test', array(
            'test' => $test,
            'question' => $question,
            'lang' => $lang,
            'time' => $time,
            'current' => $current
        ));
    }

这是进度条

<progress value="{{$time}}" max="{{$test->time}}"></progress>

最佳答案

填充/更新进度条是前端工作。 您需要ajax请求来计算,然后根据响应使用jQuery更新进度条。

类似的东西 您正在收到 ajax 的响应

$.ajax({
  url: "{your path}",
})
  .done(function( data ) {
      jQuery('progress').attr('value',time);
      jQuery('progress').attr('max',test.time);
  });

关于javascript - 仅在页面刷新时重新加载的进度条计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37203678/

相关文章:

php - 如何使用 session 变量创建 php 图像

javascript - 返回没有功能的Chrome存储API值

javascript - AngularJS App : How to include . js文件放入index.html

jquery - 如何阻止 child 传播由实时/委托(delegate)监听器触发的事件?

javascript - 单击 j-query 按钮时选择列表文本不会更改

javascript - 选中复选框时,文本字段上需要切换

jquery - Bootstrap Datepicker 无法在 Chrome 中工作

angular - Ionic和Angular中如何知道每个http请求的请求进度

ios - StrokeEnd 未绘制完整的圆

android - Mediaplayer 进度更新到 seekbar 不顺畅?