Bonjour à tous.

Alors, mon but est de Réécrire la fonction RedeemRPProduct et la réévaluer avec eval ou new Function, pour qu’elle traite différemment les données ajax de l'id fp_min_reward du Code HTML correspondant, voire qu’elle ne fasse plus d’appel ajax.

Voici mon 1er code JS qui contient la fonction RedeemRPProduct originale est :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
function RedeemRPProduct(id) {
  $(".reward_link_redeem_button_style").attr("disabled", true);
  $(".orange_button").attr("disabled", true);
  var points = $("#encash_points_number").val();
 
  $.get('/?op=redeem_rewards&id=' + id + '&points=' + points, function(data) {
    var result = data.split(":");
    var msg;
    if (result[0] == "s") {
      $('.user_reward_points').html(result[2]);
      if (result[1] == "s1") {
        $('#balance').html(result[5]);
        balanceChanged();
        msg = "Successfully converted " + ReplaceNumberWithCommas(parseInt(result[3])) + " points to " + parseFloat(parseInt(result[4]) / 100000000).toFixed(4);
      } else if (result[1] == "s2") {
        msg = "Your bonus has been succesfully activated!";
        var inner_div_html = '<p>Active bonus <span class="free_play_bonus_box_span_large">' + result[5] + '</span> ends in <span class="free_play_bonus_box_span_large" id="bonus_span_' + result[3] + '"></span></p>';
        if ($("#bonus_container_" + result[3]).length > 0) {
          $("#bonus_container_" + result[3]).html(inner_div_html);
        } else {
          $('#reward_points_bonuses_main_div').append('<div class="bold center free_play_bonus_box_large" id="bonus_container_' + result[3] + '">' + inner_div_html + '</div>');
        }
        $("#bonus_container_" + result[3]).show();
        BonusEndCountdown(result[3], parseInt(result[4]));
        if (result[3] == "fp_bonus") {
          $('#fp_min_reward').html(result[6]);
        }
      } else if (result[1] == "s3") {
        msg = "Your redemption request for " + result[3] + " has been sent succesfully. We shall contact you via email for your shipping details (if required). If you do not have an email address added to your account, please add it now via the PROFILE page.";
      }
    } else if (result[0] == "e") {
      msg = result[1];
    }
    DisplaySEMessage(result[0], msg);
    $(".reward_link_redeem_button_style").attr("disabled", false);
    $(".orange_button").attr("disabled", false);
  });
}
 
function BonusEndCountdown(selector, duration) {
  var start = Date.now(), diff, hours, minutes, seconds;
 
  var timer_run = setInterval(function timer() {
    diff = duration - (((Date.now() - start) / 1000) | 0);
    hours = (diff / (60 * 60)) | 0;
    minutes = ((diff - (hours * 60 * 60)) / 60) | 0;
    seconds = (diff - (minutes * 60) - (hours * 60 * 60)) | 0;
    hours = hours < 10 ? "0" + hours : hours;
    minutes = minutes < 10 ? "0" + minutes : minutes;
    seconds = seconds < 10 ? "0" + seconds : seconds;
    $("#bonus_span_" + selector).html(hours + ':' + minutes + ':' + seconds);
    if (diff <= 0) {
      $("#bonus_container_" + selector).hide();
      clearInterval(timer_run);
      return;
    }
  }, 1000);
}
 
function DisplaySEMessage(result, msg, custom_timeout) {
  if (result != '' && result != 0 && result != undefined && msg != '' && msg != 0 && msg != undefined) {
    clearTimeout(se_msg_timeout_id);
    $('.reward_point_redeem_result_box').removeClass('reward_point_redeem_result_error');
    $('.reward_point_redeem_result_box').removeClass('reward_point_redeem_result_success');
    $('#reward_point_redeem_result_container_div').show();
    if (result == "s") {
      $('.reward_point_redeem_result_box').addClass('reward_point_redeem_result_success');
    } else if (result == "e") {
      $('.reward_point_redeem_result_box').addClass('reward_point_redeem_result_error');
    }
    $('.reward_point_redeem_result').html(msg);
    var timeout = 15000;
    if (custom_timeout > 0) {
      timeout = custom_timeout;
    }
    se_msg_timeout_id = setTimeout(function() {
      $('#reward_point_redeem_result_container_div').hide();
    }, timeout);
  }
}
 
function balanceChanged() {
  if (max_deposit_bonus > parseFloat(min_bonus_amount)) {
    $('.dep_bonus_max').html(max_deposit_bonus);
  }
  $('#balance2').html($('#balance').html());
  balance_last_changed = Math.floor(Date.now() / 1000);
}
Le Code HTML contenant la données à modifier est juste ci-dessous et cette données à modifier est celle de l'id fp_min_reward du Code HTML correspondant qui était appelée via Ajax:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
<div class="large-6 small-6 columns center lottery_winner_table_box lottery_winner_table_first_last_cell" style="border-left: none;" id="fp_min_reward">1.0024</div>
Et maintenant mon 2ème Code JS dans lequel je souhaiterais réécrire la fonction RedeemRPProduct et la réévaluer avec eval ou new Function, pour qu’elle traite différemment les données ajax de l'id fp_min_reward du Code HTML correspondant, voire qu’elle ne fasse plus d’appel ajax.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
(function() {
    'use strict';
 
var body = $('body');
 
var points = {};
 
    if ($('#free_play_form_button').is(':visible'))
        setTimeout(function(){ $('#free_play_form_button').click();},2000);
    if ($('.close-reveal-modal').is(':visible'))
        setTimeout(function(){ $('.close-reveal-modal').click(); },2000);
 
    var reward = {};
    reward.select = function() {
        reward.points = parseInt($('.user_reward_points').text().replace(',',""));
        reward.bonustime = {};
        if ($("#bonus_container_free_points").length != 0) {
            reward.bonustime.text = $('#bonus_span_free_points').text();
            reward.bonustime.hour = parseInt(reward.bonustime.text.split(":")[0]);
            reward.bonustime.min = parseInt(reward.bonustime.text.split(":")[1]);
            reward.bonustime.sec = parseInt(reward.bonustime.text.split(":")[2]);
            reward.bonustime.current = reward.bonustime.hour * 3600 + reward.bonustime.min * 60 + reward.bonustime.sec;
        } else
            reward.bonustime.current = 0;
 
 
        console.log(reward.bonustime.current);
        if (reward.bonustime.current !== 0) {
            console.log(reward.bonustime.current);
        } else {
            if (reward.points < 12) {
                console.log("waiting for points");
            }
            else if (reward.points < 120) {
                    console.log("waiting for points 60");
                    RedeemRPProduct('free_points_1');
                }
            else if (reward.points < 600) {
                    console.log("waiting for points 120");
                    RedeemRPProduct('free_points_10');
                }
            else if (reward.points < 1200) {
                    console.log("waiting for points 600");
                    RedeemRPProduct('free_points_50');
                }
            else {
                RedeemRPProduct('free_points_100');
            }
            if ($('#bonus_span_fp_bonus').length === 0)
                if (reward.points >= 4400)
                    RedeemRPProduct('fp_bonus_1000');
        }
    };
    setTimeout(reward.select,1000);
    setInterval(reward.select,60000);
})();
La variable result est déclarée ligne 7 du 1er Code JS :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
var result = data.split(":");
Et data c’est la réponse de la requête ajax $.get de la ligne juste au-dessus. Les valeurs que je recherche n’apparaissent pas dans le code car elles sont transmises via Ajax.

Alors, comment donc réécrire la fonction RedeemRPProduct dans le 2ème Code JS et la réévaluer avec eval ou new Function, pour qu’elle traite différemment les données ajax qui s'affiche au niveau de l'id fp_min_reward du Code HTML correspondant, voire qu’elle ne fasse plus d’appel ajax ???