在我的情况下,如何只发送一次AJAX调用

我对如何编写这个逻辑很困惑。 我正在寻找的是video播放时,如果video观看百分比超过2%,我想发送一次AJAX请求。 但实际发生的是它会继续从2%到100%触发

如果我写=(等于)而不是>(大于)它不会触发因为我没有舍入数字因此由于小数它不会触发。 那么在这种情况下如何编写这种逻辑呢? AJAX请求应该只发送一次。

var j = 0; $("#video").bind("timeupdate", function() { var currentTime = this.currentTime; var totalPlayed = 0; var played = video.played; for (var i = 0; i  0.02*(totalTime)) { //watched 2% and above then this will excute 0.02(2%) alert("asdsad"); if(j < 1) { /* Ajax call video watched starts here it should trigger only once*/ $.ajax({ url: "student_learning_controller.php", method: "POST", data: {'action': 'videoWatched', 'course_id': course_id,'videoId' : videoId,'totalVideoTime':totalTime,'totalPlayedTime':totalPlayed,'percentagePlayed':playedInPercentage }, dataType: "json", success: function (response) { if (response["success"] == true) { $("#success_message").html(response["message"]); } }, error: function (request, status, error) { $("#warning_message").show(); $("#warning_message").html("OOPS! Something Went Wrong Please Try After Sometime!"); } }); /* Ajax call video watched ends here */ } j += 1; //Reset for duplicates (repeated playback) } }); 

你可以使用var triggered = 0; 在“如果”之前。

然后“if”变为: if(totalPlayed > 0.02*(totalTime) && !triggered ){triggered = 1;

这将只执行一次,因为当您输入“if”时,您将更新“已触发”变量,并且它不会再次进入“if”。

使用变量。 输入ajax时,可以更改变量。 在IF中使用变量。

JS:

 var var_tr = $(#hideninput).val(); if(totalPlayed > 0.02*(totalTime) && Var_tr == "false") { ... $(#hideninput).val("True"); /* Ajax call video watched starts here it should trigger only once*/ $.ajax({ url: "student_learning_controller.php", method: "POST", data: {'action': 'videoWatched', 'course_id': course_id,'videoId' : videoId,'totalVideoTime':totalTime,'totalPlayedTime':totalPlayed,'percentagePlayed':playedInPercentage }, dataType: "json", success: function (response) { if (response["success"] == true) { $("#success_message").html(response["message"]); } }, error: function (request, status, error) { $("#warning_message").show(); $("#warning_message").html("OOPS! Something Went Wrong Please Try After Sometime!"); $(#hideninput).val("false"); } }); /* Ajax call video watched ends here */ } 

HTML创建: