このロジックの書き方については混乱します。 私が探しているのは、ビデオが再生されているときで、ビデオ視聴率が2%を超える場合は、AJAXリクエストを1回送信したいとします。しかし、実際に起こっていることは、それは私が=(より大きい)の代わりを>(等しい)を記述する場合、私は丸めておりませんので、それがトリガされていない2%から100%まで私の場合は一度だけAJAXコールを送信する
をトリガーし続けますです小数点以下の桁数はトリガーされません。どのようにこのシナリオでこのロジックを書くことができますか? AJAXリクエストは1回だけ送信する必要があります。
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に設定します。今、 'ajaxSent'変数が真でないことをチェックするajax呼び出しの上に1つの余分な条件を追加するだけです。 –
ブール値のフラグを使用して1回目のコールでその値を設定し、別のコールを送信する条件でそれをチェックしてください。 –
@MohitBhardwajは私がそれを得ていない答えを書いてくれますか? –