Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Javascript Redirect using setTimeout

I have a button that I want to run a piece of script and then redirect, however nothing is happening

I have another page that uses similar code and that works. but this one just isn't working

Code to work:

<a href="javascript:void(0);" onclick='$.get("features.php",{ cmd: "confirm_order", id: "<?php echo $o_id; ?>", name: "<?php echo $_SESSION['user_name']; ?>" email: "<?php echo $_SESSION['user_email']; ?>"};setTimeout("window.location.href=order.php?order_id=<?php echo $o_id;?>", 100);' class="button">

Code that already works on a different page:

<a href="javascript:void(0);" onclick='$.get("features.php",{ cmd: "remove", id: "<?php echo $o_id; ?>", prod: "<?php echo $row_prod['prod_id']; ?>" });setTimeout("window.location.href=window.location.href", 100);'>

Now I know it's all to do with my setTimeout, I'm just not sure what I'm doing wrong.

EDIT

Link now:

<a href="javascript:void(0);" class="button confirm">Confirm</a>

Code below the link:

<script type="text/javascript">
$('a .confirm').on('click',function(e){
    $.get("features.php",{
        cmd: "confirm_order",
        id: "<?php echo $o_id; ?>",
        name: "<?php echo $_SESSION['user_name']; ?>",
        email: "<?php echo $_SESSION['user_email']; ?>"
    });
    setTimeout(
        function(){
            window.location = "order.php?order_id=<?php echo $o_id;?>" 
        },
    100);
});
</script>

which still isn't working, and is rendering the \" in the code

like image 211
dpDesignz Avatar asked Dec 26 '22 19:12

dpDesignz


1 Answers

I agree with Felix Kling comment that you shouldn't add that much code to an html attribute. I see that you're using jQuery so why don't you just add this to your javascript code:

$('a .button').on('click',function(e){
    $.get("features.php",{ 
          cmd: "confirm_order",
          id: "<?php echo $o_id; ?>",
          name: "<?php echo $_SESSION['user_name']; ?>", // you were missing this comma 
          email: "<?php echo $_SESSION['user_email']; ?>"
        }).done(function(){
             window.setTimeout( function(){
                 window.location = "order.php?order_id=<?php echo $o_id;?>";
             }, 100 );
        }); // you where missing this parenthesis          

  e.preventDefault(); 
});
like image 169
Isaac Gonzalez Avatar answered Dec 29 '22 08:12

Isaac Gonzalez