Perform query after registration with Ajax/PHP

Asked

Viewed 34 times

0

help!

I’m making a registration with AJAX and PHP, Registration is OK, however, I need to run a search soon after the Registration is completed, the structure is MVC:

VIEW -register.php

CONTROLLER - custom control.php

MODEL - template.php

ASSETS - order.JS

When I register an order, my control returns the ID of this registered order, I want to take this ID and then execute the other method Localization ($idencomenda), if I put in the browser (http://localhost/levarte/control-order/location/15) with the parameter I can execute, however, I need it to be automatic for the user.

My Javascript is what makes posts.

$('#form_encomendabarco').submit(function () {
	
    
	//dados encomenda aviao
   
    var datasaida = $('#datasaida').val();
    var estadoorigem = $('#estadoorigem').val();
	var estadodestino = $('#estadodestino').val(); 
	

    $.ajax({
        url: "http://localhost/levarte/controle-encomenda/salvarEncomendaBarco",
        type: "post",
        data: {
	datasaida : datasaida,
    estadoorigem : estadoorigem,
	estadodestino : estadodestino,

	},
     
	     beforeSend: function () {
      
     
       alertify.message('PROCESSANDO!'); 
          
        },

        success: function (resultado) {
            if (resultado != 2) {
				
              alertify.message('LOCALIZANDO VIAGEM');
			  
			  ////AQUI INICIO O ENVIO DO RESULTADO QUE NA VERDADE É O IDENCOMENDA
                $.ajax({
                    type: "POST",
                    url: "http://localhost/levarte/controle-encomenda/localizaViagemBarco",
                    data: {
                        resultado: resultado,
                    },

                    beforeSend: function () {
                     alertify.message('LOCALIZANDO VIAGEM!');
                     alertify.message(resultado);
                    },		

                    success: function (data) {
						
						//AQUI DEVERIA CARREGAR A TELA COM O RESULTADO
						$('#content').html(resultado);
						  alertify.message("VOLTOU");
               
        }
    });

Registration occurs, but nothing after that.

  • Can’t you make the function call within php itself? When finishing the registration and with the Order ID, calls within php the Function Localization ($idencomenda) inside php itself and not returning an AJAX result then calling another AJAX.

1 answer

0

This is because the result of the first ajax is influencing the execution of the second. Avoid putting a $.ajax inside another, the best method to do this I believe is something like:

$('#form_encomendabarco').submit(function () {
        //dados encomenda aviao
        var datasaida = $('#datasaida').val();
        var estadoorigem = $('#estadoorigem').val();
        var estadodestino = $('#estadodestino').val();

        var finalResult = 0;

        $.ajax({
            url: "http://localhost/levarte/controle-encomenda/salvarEncomendaBarco",
            type: "post",
            data: {
                datasaida: datasaida,
                estadoorigem: estadoorigem,
                estadodestino: estadodestino,
            }, beforeSend: function () {
                alertify.message('PROCESSANDO!');
            }, success: function (resultado) {
                finalResult = resultado;
                if (resultado != 2) {
                    alertify.message('LOCALIZANDO VIAGEM');
                    func();
                }
            }
        });
    });

function func() {
    $.ajax({
        type: "POST",
        url: "http://localhost/levarte/controle-encomenda/localizaViagemBarco",
        data: {
            resultado: resultado,
        },

        beforeSend: function () {
            alertify.message('LOCALIZANDO VIAGEM!');
            alertify.message(resultado);
        },

        success: function () {

            //AQUI DEVERIA CARREGAR A TELA COM O RESULTADO
            $('#content').html(resultado);
            alertify.message("VOLTOU");

        }
    });
}

However, this calls a $.ajax within another (through the function). Another alterative (which I think is best) is to put the second ajax on the same level as the first, something like:

$('#form_encomendabarco').submit(function () {
    //dados encomenda aviao
    var datasaida = $('#datasaida').val();
    var estadoorigem = $('#estadoorigem').val();
    var estadodestino = $('#estadodestino').val();

    var finalResult = -1;

    $.ajax({
        url: "http://localhost/levarte/controle-encomenda/salvarEncomendaBarco",
        type: "post",
        data: {
            datasaida: datasaida,
            estadoorigem: estadoorigem,
            estadodestino: estadodestino,
        }, beforeSend: function () {
            alertify.message('PROCESSANDO!');
        }, success: function (resultado) {
            finalResult = resultado;
            if (resultado != 2) {
                alertify.message('LOCALIZANDO VIAGEM');
                func();
            }
        }
    });

    if (finalResult >= 0 && finalResult != 2) {
        $.ajax({
            type: "POST",
            url: "http://localhost/levarte/controle-encomenda/localizaViagemBarco",
            data: {
                resultado: resultado,
            },

            beforeSend: function () {
                alertify.message('LOCALIZANDO VIAGEM!');
                alertify.message(resultado);
            },

            success: function () {

                //AQUI DEVERIA CARREGAR A TELA COM O RESULTADO
                $('#content').html(resultado);
                alertify.message("VOLTOU");

            }
        });
    }
});

Browser other questions tagged

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