• Mon. Oct 18th, 2021

    javascript onClick update user_meta from jquery.ajax

    Byadmin

    Sep 18, 2021


    The idea is to add two values and the total of the sum save it or update it in user_meta with jquery.ajax.
    This is the code, but it gives me an error in the console Uncaught ReferenceError: ‘total’ is not defined

    Please, Any help is appreciated!

    My Button

    <a href="" onclick="CounterTrav()" id="btnTraPack"></a>
    

    javascript

    <script>
    //This sum the tow values i get from a click and works OK!
    
    const clicksContainer = document.querySelector('.clicksContainer');
    const totalEl = document.createElement('span');
    clicksContainer.appendChild(totalEl);
    
    clicksContainer.addEventListener('click', function(e) {
      if (!e.target.classList.contains('clicksContainer')) {
        const shareCLick = document.querySelectorAll('.resultTraveler');
        let total = 0;
        shareCLick.forEach(item => {
          total += parseInt(item.innerText, 10)
        totalEl.innerHTML = total
        })
        console.log(total);
      }
    })
    
    var clickCounterTrav = 0
    function CounterTrav() {
        
      clickCounterTrav += 1;
      document.getElementById("resultTraveler").innerHTML = clickCounterTrav + " Travel Pack you have Shared!";
    console.log(clickCounterTrav);
    
    var CounterTrav_update="clickCounterTrav";
    jQuery.ajax({
        url: '/wp-admin/admin-ajax.php',
            
            data : {
                action : 'CounterTrav_update', 
                CounterTrav_value : CounterTrav_value,
            },
            beforeSend: function() {
                   console.log('Updating Field');
            },
            success : function( response ) {
                 console.log('Success');
            },
            
        });
    }
    </script>
    

    // MY ISSUE START HERE
    If I use

    var CounterTrav_update="clickCounterTrav";
    

    The result of the sum is Correct, and the user_meta is Update OK!, BUT only update “clickCounterTrav”
    Like Eg: The user onready have in user_meta 2 clicks storage, and in session2 click just one time, then update user_meta with 1 value.

    PHP

    add_action( 'wp_ajax_CounterTrav_update', 'CounterTrav_update' );
    add_action( 'wp_ajax_nopriv_CounterTrav_update', 'CounterTrav_update' ); // This lines it's because we are using AJAX on the FrontEnd.
    
    function CounterTrav_update(){
        if(empty($_REQUEST) || !isset($_REQUEST)) {
            ajaxStatus('error', 'Nothing to update.');
        } else {
            try {
                $user = wp_get_current_user();
                $CounterTrav_value = $_GET['CounterTrav_value'];
                    update_user_meta( $user->ID, 'clickCounterTrav', $CounterTrav_value );
                
                die();
            } catch (Exception $e){
                echo 'Caught exception: ',  $e->getMessage(), "n";
            }
        }
    }  
    

    If I use

    var CounterTrav_update="total";
    

    Then the Sum result is Nan and in Console error is: Uncaught ReferenceError: total is not defined



    source

    Leave a Reply

    Your email address will not be published. Required fields are marked *