Jump to content


Photo

[Jquery] Problema Com Retorno Do Ajax


  • Faça o login para participar
1 reply to this topic

#1 XyBeR

XyBeR

    Novato no fórum

  • Usuários
  • 8 posts
  • Sexo:Não informado

Posted 03/05/2010, 08:14

Galera eu tenho a função "salvaGrade" que é chamada por um botão que por sua vez passa por todas as linhas da minha tabela e que chama uma outra função "CadastraProgrodo" para gravação via ajax os dados no banco, meu problema é que ma primeira vez que a função "salvaGrade" chama a função "CadastraProgrodo" ele já me retorna false ao invés de aguarda o retorno e continuar, seria possivel fazer com que o processo aguarde o retorno no ajax para proseguir? Em testes passo-a-passo com firebug eu recebo o retorno true mas pq eu dou um tempo para o retorno processar.

function CadastraProgrodo(scgc, sorigem, sdestino, srota, sseq, suorigem, susuario)
{
        $.get("SalvaProgrodo.asp", { Cgc: scgc, Origem: sorigem, Destino: sdestino, Rota: srota, Seq: sseq, UOrigem: suorigem, Usuario: susuario }, function(data) {
                if (data == 1)
                {
                        return true;    
                }
                else
                {
                        return false;
                }
        });
}
function salvaGrade()
{
        var origem  = "SCCRCIIUMA";
        var destino = "SPSAO PAULO";
        var rota    = "TESTE";
        var usuario = "cristiano";
        var total   = $('#ReportTable tr').length - 1;

        for(var i = 1; i <= total; i++)
        {
                var cgc = $('#ReportTable tr:eq('+i+') td:eq(1)').text();
                if (i == 1)
                {
                        uorigem = origem;
                }
                else
                {
                        uorigem = $('#ReportTable tr:eq('+(i - 1)+') td:eq(3)').text();
                }
                if (CadastraProgrodo(cgc, origem, destino, rota, i, uorigem, usuario))
                {
                        continue;       
                }
                else
                {
                        alert('Hove um erro durante a gravação da rota! Tente novamente!');
                        break;
                }
        }
        salvaGrade2(origem, destino, rota, usuario);
}


#2 André Manoel

André Manoel

    Doutor

  • Usuários
  • 996 posts
  • Sexo:Masculino
  • Localidade:Brasilia

Posted 03/05/2010, 09:22

Bem... você está com um grande problema!
Você está tentando usar o ajax dentro de um for... !
O for é processado na velocidade do navegador... e a requisição do ajax na velocidade do servidor...

O ideal seria realizar o processamento de tudo dentro do arquivo 'SalvaProgrodo.asp';

Não use o for para percorrer cada linha e salvar direto.
Utilize o for para criar um array que contenha todos os dados da sua tabela em questão e envie o array para ser salvo dentro do seu arquivo no servidor, no caso o 'SalvaProgrodo.asp'. Aí ao invés de ter diversas chamadas de ajax, você teria uma única chamada e enviaria o array para ser salvo dentro do seu
'SalvaProgrodo.asp'
Iniciando na Ajuda On line...

Posted Image Meu post lhe ajudou? Reputar/votar é uma das formas de agradecer.




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq