RSS

Arquivo da categoria: Aplicações web

Refresh em campo ajax [arquivo pai - filho]

Estive desenvolvendo uma aplicação web e me deparei com a seguinte situação:

Atualizar um campo ajax que existe no arquivo principal (pai), através de um pop-up (filho).
Se esta é sua dúvida, continue lendo … tenho a solução!

Obs: Não foco como implementar o ajax, parto do princípio que você já tenha moldado o ajax aos arquivos.

Exemplo:

Em um formulário de produtos, tenho um combo gêneros, carregado utilizando ajax. Neste campo facilitaria bastante se existisse uma maneira de cadastrar estas informações apartir da tela de produtos, portanto, cria-se um pop-up, desenvolve o formulário de gêneros e salva as informações.
Mas como ao salvar, retornar para a tela principal com esta nova informação atualizada no combo ajax?
Bom, … a solução:

No action do formulário, chame o próprio pop-up, salve as informações, em seguida identifique o browser, pois a função utilizada difere, feche a janela pop-up e então no body chame a função onunload (execução ao fechar a janela), e use a função window.opener.execScript ou window.opener.eval. O truque esta em que ambas as funções possibilitam a chamada de uma função javascript existente no arquivo principal, esta função que será chamada deve ser a que carrega seu combo ajax.
Visualize as descrições no código abaixo [Resumidamente]:

Arquivo Principal (Pai):

<!– Função javascript que carrega informações combo ajax –>

 function carregar_generos(){

 ajax(‘id_genero’, ‘caminho_arq_ajax’, ‘method’);

}

<!– Identificação do combo ajax –>

<span id=”id_genero”>

<select name=”CODIGOGENERO” id=”CODIGOGENERO” class=”TextFieldMntObrig”>

<option value=”0″>Selecione o Gênero</option>

</select>

</span>

<!– Chamada do pop-up –>

<a onClick=”window.open(‘caminho_arq_popup’,'genero’,'top=400, left=400, width=800, height=150′);”>

Adicionar Gênero

</a>

Arquivo Pop-Up (Filho):


// Salva as informações e fecha a janela pop-up

if(acao for gravar)){

// Faz os procedimentos para gravar as informações no bd de gêneros
// Obriga a fechar a janela de pop-up (Aqui dispara o onunload)

<script language=”javascript”>window.close();</script>

}

/* Método que identica o browser – IE e FireFox */
<script language=”JavaScript”>

var nom = navigator.appName;
var browser = 2;

if (nom == “Microsoft Internet Explorer”){

alert(“Microsoft Internet Explorer”);
browser = 1;

}else if (nom == “Netscape”){

alert(“Netscape”);
browser = 2;

}

</script>

<!– Formulário e o truque, chamada da função javascript no arquivo principal –>
<html>

<body onunload=”javascript:if(browser == 1) window.opener.execScript(‘carregar_generos()’); else window.opener.eval(‘carregar_generos()’);”>

<form name=”frmGenero” method=”post” action=”nome_arquivo_popup.extensao?acao=gravar” id=”frmGenero”>

<!– Conteúdo do formulário –>

</form>

</body>

</html>

Pronto, … bronca resolvida!

 
Leave a comment

Publicado por em 24 junho 2010 em Refresh em campo ajax

 

Tags: , , , , , , ,

 
Seguir

Obtenha todo post novo entregue na sua caixa de entrada.