Sending variables in Ajax to PHP

1

Using php I search the DB and send the data to AJAX via JSON:

echo json_encode(array('sucesso'=>true, 'mensagem'=>'Dados inseridos com sucesso','idservico'=>$idServico));

In AJAX I manipulate the variables and now I need to send the serviceId variable to the view. For this I created input id = 'idservico', in my html file (.php), and in Ajax I assign the value

msg = $.parseJSON(msg);
$('#idservico').val(msg.idservico);

In my html file I need to do a new search, without there being a refresh on the page. My question is how do I capture a value in AJAX, send it to a new PHP request?

I have tried to store cookies in Ajax and then read in PHP but I do not know if I did it right.

Writing to AJAX: $.cookie("idservico",msg.idservico);

Reading in PHP: $_COOKIE['idservico];

My JQuery code:

$('#abrirServico').click(function () {
    // - Requisitamos os valores dos campos...
    var data  = $("#data").val();
    var idcliente = $("#idCliente").val();
    var idcarro = $("#idCarro").val();
    var page = 'grava_servico.php';
    $.ajax({
        type: 'POST',
        dataType: 'html',
        url: page,
        beforeSend: function () {
            $("#abrirServico").html("Salvando os dados");
        },
        data: {data:data, idcliente:idcliente, idcarro: idcarro},
        success: function (msg) {
            msg = $.parseJSON(msg);
            if(msg.sucesso == true){
                alert(msg.mensagem);
                // exibe o formulário para adicionar novas peças
                $('#itensServico').css("display","block");
                //atribui o valor do idservico para ser usado na hora de salvar na tabela peca_servico
                $('#idservico').val(msg.idservico);
                $.get('new.php', {'idservico': msg.idservico});    
            } else {
                alert(msg.menssagem);
            }
            $("#abrirServico").html("Serviço Aberto");
            $("#abrirServico").attr('disabled', true);
            $("#buscarCliente").attr('disabled', true);
            $("#resetCliente").attr('disabled', true);
            $("#buscarCarro").attr('disabled', true);
            $("#resetCarro").attr('disabled', true);
        },

    });
})
    
asked by anonymous 10.01.2018 / 18:44

1 answer

2

It's easy young, this is your requisition:

$('#abrirServico').click(function () {
// - Requisitamos os valores dos campos...
var data  = $("#data").val();
var idcliente = $("#idCliente").val();
var idcarro = $("#idCarro").val();
var page = 'grava_servico.php';
$.ajax({
    type: 'POST',
    dataType: 'html',
    url: page,
    beforeSend: function () {
        $("#abrirServico").html("Salvando os dados");
    },
    data: {data:data, idcliente:idcliente, idcarro: idcarro},
    success: function (msg) {
        msg = $.parseJSON(msg);
        if(msg.sucesso == true){
            alert(msg.mensagem);
            // exibe o formulário para adicionar novas peças
            $('#itensServico').css("display","block");
            //atribui o valor do idservico para ser usado na hora de salvar na tabela peca_servico
            $('#idservico').val(msg.idservico);
            $.get('new.php', {'idservico': msg.idservico});    
        } else {
            alert(msg.menssagem);
        }
        $("#abrirServico").html("Serviço Aberto");
        $("#abrirServico").attr('disabled', true);
        $("#buscarCliente").attr('disabled', true);
        $("#resetCliente").attr('disabled', true);
        $("#buscarCarro").attr('disabled', true);
        $("#resetCarro").attr('disabled', true);
    },

});

})

Now you assign a variable to this your id service, like this:

meu_id_servico = $('#idservico').val(msg.idservico);

note that the variable is global. A tip Ajax works assíncrona , that is, if you put two ajax , the two will begin to run together so you have to wait for the first one to get the value of meu_id_servico and send to another request right? How to do this?

Simple, you only have to place this other request within .done() of the first ajax . or it will be executed when the first one is ready. (in other words when your id_serviço variable is populated).

At the end of your request, leave it like this:

        $("#resetCliente").attr('disabled', true);
        $("#buscarCarro").attr('disabled', true);
        $("#resetCarro").attr('disabled', true);
    },

}).done(function() {

       //aqui o código da sua nova requisição    
       $.ajax({
            type: "POST",
            url: "url_nova.php",
            **data: { meu_id_servico : meu_id_servico},**
            cache: false,
            beforeSend: function() {

            },
            complete: function() {

            },
            success: function (retorno) {

            },
            error: function(data) {
                console.log(data);
            }
        });

});
    
11.01.2018 / 12:45