Load a Function after Success return and redirect page

Asked

Viewed 72 times

1

I got the following button:

 <a asp-controller="Checkout" asp-action="Checkout" class="btn btn-success btn-lg btn-block pull-right" onclick="Checkout()">Finalizar</a>

he calls the following function:

function Checkout() {
var cookieValue = document.cookie.replace(/(?:(?:^|.*;\s*)Projeto\s*\=\s*([^;]*).*$)|^.*$/, "$1");
var arrayProdutos = $.parseJSON(cookieValue);

$.ajax({
    type: "POST",
    url: '/Checkout/Checkout',
    dataType: 'json',
    async: false,
    data: {
        'produtos': arrayProdutos
    },
    success: function (data) {
        produtos.forEach(function (produto, i) {
            produto["Imagem"] = data[i].imagem.replace("~", "");
            produto["Descricao"] = data[i].descricao;

            setCookie();

        });
        CheckoutView();
    },
    error: function (error) {
        alert('Nao enviou');
    }
});
}

As seen he goes to the controller, then returns, at the end of the success, I call another Function:

function CheckoutView() {   
var cookieValue = document.cookie.replace(/(?:(?:^|.*;\s*)Projeto\s*\=\s*([^;]*).*$)|^.*$/, "$1");

if (cookieValue != "") {
    produtos = $.parseJSON(cookieValue);
}

total = 0;
$(produtos).each(function (i) {
    total += produtos[i].Valor * produtos[i].Quantidade;
});

    ItemProduto = "";
    $(produtos).each(function (i) {
        ItemProduto += '<tr>';
        ItemProduto += '<td data-th="Product">';
        ItemProduto += '<div class="row">';
        ItemProduto += '<div class="col-sm-2 hidden-xs"><img src="' + produtos[i].Imagem + '" alt="..." class="img-responsive"/></div>';
        ItemProduto += '<div class="col-sm-10">';
        ItemProduto += '<h4 class="nomargin">' + produtos[i].Nome + '</h4>';
        ItemProduto += '<p>' + produtos[i].Descricao + '</p>';
        ItemProduto += '</div>';
        ItemProduto += '</div>';
        ItemProduto += '</td>';
        ItemProduto += '<td data-th="Price">R$ ' + produtos[i].Valor + '</td>';
        ItemProduto += '<td data-th="Quantity">';
        ItemProduto += '<input type="number" class="form-control text-center" value="' + produtos[i].Quantidade + '" id="' + produtos[i].Id + '" onchange="AlterarQtd(' + produtos[i].Id + ',this.value);">';
        ItemProduto += '</td>';
        ItemProduto += '<td data-th="Subtotal" class="text-center">' + (produtos[i].Valor * produtos[i].Quantidade).toFixed(2) + '</td>';
        ItemProduto += '<td class="actions pull-right" data-th="">';
        ItemProduto += '<button class="btn btn-danger btn-sm" onclick="RemoveAll(' + produtos[i].Id + ')"><i class="fa fa-trash-o"></i></button>';
        ItemProduto += '</td>';
        ItemProduto += '</tr>';
    });

    $("#produto").html(ItemProduto);
    $("#total").html("R$ " + total.toFixed(2));

}

But I want Function Checkoutview(), load only after my page has been loaded/redirected to another.

before I was using: if (window.location.pathname === "/Checkout/Checkout") { or instead function CheckoutView() , and it worked because I need to call her Function because I need to use it later, to be called at another time.

  • When the page is loaded/redirected?

  • It is currently on the button: Asp-controller="Checkout" Asp-action="Checkout", it goes on the controller’s get and reloads, that at the same time as it does onclick="Checkout()", in which it goes in the POST method, and redirect within the Success : Success: Function (date) ? window.Location = "/Checkout/Checkout"; and then call Function, but it executes everything to then redirect

1 answer

1


Replace this code with your own.

function Checkout() {
    var cookieValue = document.cookie.replace(/(?:(?:^|.*;\s*)Projeto\s*\=\s*([^;]*).*$)|^.*$/, "$1");
    var arrayProdutos = $.parseJSON(cookieValue);

    $.ajax({
        type: "POST",
        url: '/Checkout/Checkout',
        dataType: 'json',
        async: false,
        data: {
            'produtos': arrayProdutos
        },
        success: function (data) {
             produtos.forEach(function (produto, i) {
                produto["Imagem"] = data[i].imagem.replace("~", "");
                produto["Descricao"] = data[i].descricao;

                setCookie();

            });
        },
        error: function (error) {
            alert('Nao enviou');
        }
    });

add that to the document

        $(document).ready(function () {
           if (window.location.pathname === "/Checkout/Checkout") {
               CheckoutView();
           }
       })

Browser other questions tagged

You are not signed in. Login or sign up in order to post.