0

I have a countdown timer in my view's script block. Edit.blade.php:

<div class='bottom_timer_block'>
    <span class="bottime_title">Subscription period</span>
    <span><b>End date:</b> {{ $paid_till }}</span>
    <span>
        <b>Countdown timer: </b>
        <span id="demo"></span>
            <script>
                var countDownDate = new Date('{{ $paid_till }}').getTime();                         
                var x = setInterval(function() {
                // Get todays date and time
                var now = new Date().getTime();

                // Find the distance between now an the count down date
                var distance = countDownDate - now;

                // Time calculations for days, hours, minutes and seconds
                var days = Math.floor(distance / (1000 * 60 * 60 * 24));
                var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
                var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
                var seconds = Math.floor((distance % (1000 * 60)) / 1000);

                // Display the result in the element with id="demo" 
                document.getElementById("demo").innerHTML = days + "d " + hours + "h "
                                    + minutes + "m " + seconds + "s ";

                // If the count down is finished, write some text 
                if (distance < 0) {                                         
                    $.post("/ajax/update-payment", {id:$user->id} ).done(function( data ) {                                                                                           
                    });

                    clearInterval(x);                                           
                    document.getElementById("demo").innerHTML = "EXPIRED";
                }
                }, 1000);
            </script>

When the counter reaches it's limit. It should call updatePayment function located in my "User" model. My AjaxController:

function updatePayment($id = 0){        
    $user = User::where('id', $id);
    $user->is_paid = 0;
    $user->paid_date = null;
    $user->paid_till = null;
    $user->save();
}

But instead of that I get "Uncaught SyntaxError: Unexpected token >" error. Is there any other way to solve this?

1 Answer 1

1

that's because you are passing a php variable directly to javascript :

{id:$user->id}

however, another issue is that curly braces has special meaning in blade template engine, so you should pass it as follows:

{id: '{{ $user->id }}' }
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.