Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

KMRodrigo

[Resolvido] Problema com uso do WIndow.Open

Recommended Posts

Galera, to precisando de um help aqui para a empresa

 

Acontece o seguinte.

 

se eu criar o Form com apenas a action="cadastrar_cliente.php"

o site funciona normalmente.

 

Mas se eu usar a seguinte função

 

 

 

 

<script language="javascript">

var win = null;

function abrir(pagina,nome,w,h,scroll){

LeftPosition = (screen.width) ? (screen.width-w)/2 : 0;

TopPosition = (screen.height) ? (screen.height-h)/2 : 0;

settings = 'height='+h+',width='+w+',top='+TopPosition+',left='+LeftPosition+',scrollbars='+scroll+',resizable'

win = window.open(pagina,nome,settings);

}

</script>

 

 

 

e dps adicionar o window.open no botão com onclick, ele chama a página, abre a janela nas dimensões escolhidas, mas a página executa seu script e não consegue capturar as variáveis do form.

 

ai da o erro

Undefined index: chkCPF in local\cadastrar_clienteJ.php on line

Undefined index: Campo_Numero in local\cadastrar_clienteJ.php on line

 

é como se o window open apagasse o que foi preenchido no form antes de enviar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem um tópico quase parecido com o seu vê se ajuda link.

 

Uma coisa que reparei no seu código foi o seguinte: chamada laguage="javascript" desnecessária e falta do type="text/javascript" que é obrigatório.

Compartilhar este post


Link para o post
Compartilhar em outros sites

se você quer enviar o formulario para o outro lugar, que não é o 'normal', estude sobre o atributo target

Compartilhar este post


Link para o post
Compartilhar em outros sites

usando o target="_black" o site funciona, mas a janela tem a aparecer como um "alert" ou com o black mas redimensionado no meio da tela, apenas para o usuario dar um OK e prosseguir com o sistema.

 

as minhas pagnas, são muito grande jah que se trata de um ERP, com cerca de 700 linhas uma delas. não da pra postar, se acharem que precisa de algum conteúdo me dá um toque que eu seleciono

Compartilhar este post


Link para o post
Compartilhar em outros sites
a janela tem a aparecer como um "alert" ou com o black mas redimensionado no meio da tela, apenas para o usuario dar um OK e prosseguir com o sistema

que tal então um window.confirm() ??

 

direcione o target do form para um iframe hidden, e no callback desse iframe, mostre o confirm.. sei lá..

oq não faz sentido, é abrir uma nova instancia de navegação apenas para processar o formulario.

Compartilhar este post


Link para o post
Compartilhar em outros sites

então amigo, a pag. que está abrindo no meu form está com vários tratamentos de variáveis, incluindo validação de CPF comunicação com banco de dados e se todo ocorre bem ela devolve a msg (salvo com sucesso) e se tudo ocorre errado ela exibe onde está o erro.

 

entendi modera, dei uma olhada no conceito iframe, mas no caso. ele aparece o usuário clica e ele some? ou ele fica no meio da minha tabela?

 

eu n conheço alguns termos.

 

entendi que pelo iframe eu chamo minha pág com as validações e etc.

pode me passar a sintaxe do iframe?

Compartilhar este post


Link para o post
Compartilhar em outros sites
ele aparece o usuário clica e ele some?
não.

ou ele fica no meio da minha tabela?

não necessariamente também.

 

 

eu n conheço alguns termos.

iframe é uma tag

 

http://www.w3schools.com/TAGS/tag_iframe.asp

 

hidden é que ele estaria escondido. [ display: none; ]

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok, obrigado pela ajuda.

Mas ainda n sei utiliza-lo, tipo eu quero clicar no botão gravar e abrir a pág. sem interromper o formulário.

 

<iframe src="cadastrar_clienteJ.php" width="300" display::"none" height="300">

<p>Your browser does not support iframes.</p>

</iframe>

 

ou eu coloco no

<iframe src="paginadoform(atualpagina)" width="100%" height="300">

Aki os codigos PHP e validadores e botáo confirm

</iframe>

 

Lendo o topico postado pelo membro ali de cima acredito que achei a resposta apenas nao a entendi ainda

o cara tinha isso

 

function abre(){

open("teste.php?tst","janela","location,width=250,height=100");

}

</script>

 

e o moderador pediu para ele trocar por isso

 

open("teste.php?tst=123","janela","location,width=250,height=100");

 

 

 

 

oq é a ?tst e pq dps ele atribuio 123?

Compartilhar este post


Link para o post
Compartilhar em outros sites

esqueça o outro topico.

 

o contexto dele não se aplica ao teu.

 

essa troca do src que você fez não faz nenhum sentido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

veja

 

newcliente.php (pagina de cadastro)

<form id="usuario" name="usuario" method="post" action="cadastrar_clienteJ.php" target="_blank" >

 

.......campos CPF, Email etc, e tabelas......

 

<input name="enviar" type="submit" id="enviar" value="Gravar Cliente" >

 

acaba newcliente.php

 

documento que recebe abaixo

 

cadastro_cliente.php (cadastra no banco de dados e faz as verificações de campos)

?php

 

//----------------------------------Inicio validador de CPF e CNPJ-------------------------------

 

 

$chkCPF = $_POST["chkCPF"];

$CampoNumero = $_POST["Campo_Numero"];

 

 

 

 

if (${"chkCPF"}=="on")

{

CalculaCPF($CampoNumero);

}

else

{

CalculaCNPJ($CampoNumero);

}

 

 

 

 

//Função que calcula CNPJ e dps a que calcula CPF, sao ativadas de acordo com o chkCPF.

.

.

e outros comando

.

.

Encerra aqui

 

 

A questão é....tudo isso funciona perfeitamente, porém não quero que abra outra página e faça as verificações e etc.

 

Quero que apenas apareça alguma msg pro usuário dizendo se tudo deu certo ou não.

 

quando eu uso o window open()

 

a pag cadastro_cliente.php abre com o erro de que não encontrou as variáveis chkCPF e CampoNumero

 

as msm que ela encontra perfeitamente se eu n usar o windowopen

Compartilhar este post


Link para o post
Compartilhar em outros sites

quando eu uso o window open()

 

a pag cadastro_cliente.php abre com o erro de que não encontrou as variáveis chkCPF e CampoNumero

 

as msm que ela encontra perfeitamente se eu n usar o windowopen

sim, por isso que você não pode usar o window.open() dessa forma.

 

você foi procurar pelo atributo target que nem eu sugeri ?

você tentou usar o iframe ?

 

a ultima opção é enviar com ajax.

Compartilhar este post


Link para o post
Compartilhar em outros sites

não se preocupe não sou do tipo que quer não apenas n entendi.

 

o termo que n tinha entendido era o CALLBACK o que significa?

 

sim to pesquisando sobre o target por isso consegui fazer abrir em outra janela. O Iframe acabei de encontrar um topico aqui sobre o assunto e estou lendo

 

encontrei algo do tipo

 

target="nomeDoIframe" no <form>.

 

 

ai nas tar do iframe eu o crio como se fosse um CSS (tipo tamanho, nome, posicionamento e ações)?

Compartilhar este post


Link para o post
Compartilhar em outros sites

ai nas tar do iframe eu o crio como se fosse um CSS (tipo tamanho, nome, posicionamento e ações)?

não.

 

o iframe ficará escondido. Ele vai apenas processar o form.

a exibição da resposta você fará no callback [retorno, resposta] do iframe.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado willian, consegui resolver parte com esse script

<iframe style="display:none;" name="recebeForm"></iframe>

no form tem o action = cadastro_cliente.php e o target = recebform

 

O problema é : o usuário não recebe notificação nenhuma.

tem como exibir um alert? tipo o alert fica no cadastro_cliente.php e exibir na pag atual do form.

 

Tipo a logica eh simples. If (se funcionar) {exibe OK no alert} Else { erro = seguinte erro } ;

 

ou nem precisa direcionar? e so por pra rodar o alert no display escondido e ele exibe na pag atual, afinal o alert jah abre por cima msm. (desculpe se estiver abusando)

Compartilhar este post


Link para o post
Compartilhar em outros sites

de dentro do iframe, faça:

 

parent.alert( 'Oi' );

Compartilhar este post


Link para o post
Compartilhar em outros sites

dentro do iframe, ou dentro do cadastro_cliente.php que vai aparecer dentro do cliente?

 

pq preciso por o alert dependendo dos IFs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tópico Resolvido =)

 

if($conexao == 1){

 

echo "

<script>alert('Salvo com Sucesso');</script> ";

 

a janela escondido no iframe oculto. o Form com o target indicando pro iframe.

 

Desculpe o transtorno W.Bruno. Obrigado pelo help.

Comecei a trabalhar na área semana passada e tenho alguns problemas de vez em quando.

 

Novamente obrigado galera. Salvou minha semana

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.