我很困惑如何编写这个逻辑。 我在寻找什么时候播放视频,如果视频观看百分比超过2%我想发送一次AJAX请求。但什么是实际发生的情况是,将继续从2%触发至100%如何在我的情况下只发送一次AJAX呼叫
如果我写=(等于)代替>(大于)它不触发,因为我不是四舍五入小数点后的数字不会触发。那么我如何在这种情况下编写这个逻辑呢? AJAX请求应该只发送一次。
var j = 0;
$("#video").bind("timeupdate", function() {
var currentTime = this.currentTime;
var totalPlayed = 0;
var played = video.played;
for (var i = 0; i < played.length; i++) {
totalPlayed += played.end(i) - played.start(i);
var playedInPercentage = (totalPlayed/totalTime)*100;
}
/*here i want to write a logic to send this lowered only once.*/
if (totalPlayed > 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 ajaxSent = false;',并在进行ajax调用时将其设置为true。现在,只需在ajax调用之上添加一个额外的条件来检查“ajaxSent”变量是否为真。 –
只需使用一个布尔标志并将其值设置为第一次调用并使用一个条件来检查它是否发送另一个调用 –
@MohitBhardwaj您可以写答案我没有得到它。 –