migração para lucee

59 views
Skip to first unread message

Sergio da Rocha Junior

unread,
Nov 23, 2023, 10:08:42 AM11/23/23
to cfbr...@googlegroups.com
Boa tarde.
Estou migrando CFA para lucee, mas travei num problema, se alguem puder dar uma luz, eu agradeço.

Tenho uma DIV que recebe um formulario e faz a validação das informações, até aí está ok.
Mas quando termino a validação quero ir para uma nova pagina limpa e o cflocation não sai de dentro da DIV.
Carrega a pagina, certinho, mas dentro da div.

Uma imagem contendo Logotipo

Descrição gerada automaticamente

 

http://daRocha.online

55 13 99696-2881

Sérgio da Rocha Júnior

 

Filipe Prado

unread,
Nov 23, 2023, 11:28:38 AM11/23/23
to cfbr...@googlegroups.com
Oi Sérgio.

É uma div ou um iframe?

No caso de um iframe, você poderia utilizar JS para te ajudar. Basta inserir (na página que é carregada dentro do iframe o código abaixo):

window.parent.location.href = 'http://google.com'; 

(mude para a url que deseja direcionar o usuário)

Se não for esse o caso, então peço que dê mais detalhes do seu código para poder te ajudar melhor.

Filipe Prado Christovam


--
--
Você recebeu este e-mail pois está cadastrado na lista ColdFusion Brasil
Para CANCELAR sua assinatura escreva para cfbrasil+u...@googlegroups.com
Para ASSINAR a lista escreva para cfbrasil+...@googlegroups.com
O endereço para ENVIO DE MENSAGENS da lista é cfbr...@googlegroups.com
REGRAS em http://groups.google.com/group/cfbrasil/web/regras-de-boa-convivncia-na-lista
Outras opções disponíveis em http://groups.google.com/group/cfbrasil

---
You received this message because you are subscribed to the Google Groups "ColdFusion Brasil" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cfbrasil+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/cfbrasil/128886040032330752.0.v2%40titan.email.

Sergio da Rocha Junior

unread,
Nov 23, 2023, 2:09:25 PM11/23/23
to cfbrasil, ilipe...@gmail.com
Filipe, obrigado pela atenção.

O código está grande, então simulei o ambiente, com o mesmo resultado

O código vai em anexo e a pagina roda em http://lucee.drserver.com.br/div2/

o arquivo js teve o nome mudado se não o e-mailnão vai.


Uma imagem contendo Logotipo

Descrição gerada automaticamente

 

http://daRocha.online

55 13 99696-2881

Sérgio da Rocha Júnior

 

novapagina.cfm
valida_form.cfm
div_adm.xjs
default.cfm

Robson Cabral

unread,
Nov 23, 2023, 3:45:52 PM11/23/23
to cfbr...@googlegroups.com
Boa tarde, ainda não olhei o código mas pela conversa aqui se a página abre dentro da div certinho eu acho que é um problema de direcionamento, de repente pode usar js e coloca window.top no lugar do parent, assim o js vai pegar a janela pai e vai jogar a página dentro dela.

Como o parent vai para o pai mais próximo, se estiver com a div dentro de dois outros pais você ainda poderá ter problemas neste caso.

Sergio da Rocha Junior

unread,
Nov 23, 2023, 3:56:43 PM11/23/23
to cfbrasil
Olá Robson,
Vai parecer piada, mas eu me aperto com comandos em js... pode se dizer que estou engatinhando nisso
eu sei que é basico mas como seria essa chamada em js?

Uma imagem contendo Logotipo

Descrição gerada automaticamente

 

http://daRocha.online

55 13 99696-2881

Sérgio da Rocha Júnior

 

Robson Cabral

unread,
Nov 23, 2023, 6:53:21 PM11/23/23
to cfbr...@googlegroups.com
Oi meu jovem amigo, esquenta não, js não é complicado e ajuda bastante.

Não tenha medo q hoje em dia está muito fácil de aprender.

É a mesma pegada que o Filipe passou, só que trocando o parent pelo top.

window.top.location.href = 'http://google.com'; 

Você pode pesquisar outras formas de fazer se baseando nesses dois exemplos que te mostramos.

Uma dica é ir na udemy.com e procurar um curso chamado "Curso Web Moderno Completo com JavaScript + Projetos" da empresa Cod3r.

O curso é para todos os níveis e tem muita coisa top, o instrutor está sempre atualizando.

Espero ter ajudado e que você consiga resolver o problema.

Abraços.

Sergio da Rocha Junior

unread,
Nov 23, 2023, 7:16:37 PM11/23/23
to cfbrasil
Obrigado Robson. vou dar uma olhada na sua dica de curso, 

<script type="text/javascript"> 
  window.top.location.href = 'http://google.com'; 
</script>
Usei assim cComo ultima instrução da pagina, mas nem carrega nada, 
è uma pena, pq a rotina de ler os campos de qq form pra depois validar ficou legal, pena que não dá pra sair dela kkk


Uma imagem contendo Logotipo

Descrição gerada automaticamente

 

http://daRocha.online

55 13 99696-2881

Sérgio da Rocha Júnior

 

Filipe Prado

unread,
Nov 23, 2023, 8:58:49 PM11/23/23
to cfbr...@googlegroups.com
Boa noite Sérgio, como vai??

Só tive oportunidade de ler seu código agora. Me desculpe.

Baseado no seu código você está fazendo uma requisição ajax para a "valida_form.cfm", que por sua vez está fazendo um redirect para a "novapagina.cfm". Feito isso, você está pedindo para que o Javascript pegue o conteúdo que a "novapagina.cfm" está imprimindo e adicione dentro da div armazenada na variável "divdest", que no seu caso, é a div de ID "mostra".O código que faz isso é o seguinte:

document.getElementById(divdest).innerHTML = xml.response;

Soluçao 01
Para que você chegue no resultado desejado e não precise mudar todo seu código, eu sugiro uma pequena mudança no seu html, ficando da seguinte forma:

<div style="text-align: center;" id="conteudo">
  
  <form id="formteste">
   
      Texto 1<br>
      <input type="text" name="texto1" value="Texto 1" /><br><br>
   
      Texto 2<br>
      <input type="text" name="texto2" value="Texto 2" /><br><br>
   
      Texto 3<br>
      <input type="text" name="texto3" value="Texto 3" /><br><br>
   
      Texto 4<br>
      <input type="text" name="texto4" value="Texto 4" /><br><br>
   
      Texto 5<br>
      <input type="text" name="texto5" value="Texto 5" /><br><br>
   
    <button onclick="valida_form('formteste','executa','conteudo','totcampos=5','valida_form.cfm')"> OK </button>
  </form>
 
  <div id="mostra" style="text-align: center;">
    se nenhum campo for alterado considera certo e carrega nova pagina<br>
    se não mostra a validação feita
  </div> 
</div>

Com essa alteração, o seu javascript irá jogar o conteúdo novo dentro da DIV de ID "conteudo", substituindo assim todo o HTML velho pelo HTML novo, dando a impressão de uma troca de página.

Solução 02
Imaginando que você ainda queira trabalhar com uma requisição em ajax, penso que outra solução seria você mudar a lógica da valida_form.cfm. Ao invés dela fazer um redirect, ela poderia apenas retornar um valor booleano (true para validação OK e false para validação NOK). E ai substituir o seguinte trecho do javascript:
xml.onreadystatechange = function (){
    if (xml.readyState == 4 && xml.status == 200) {
        document.getElementById(divdest).innerHTML = xml.response;
    }

por esse novo código:
xml.onreadystatechange = function (){
    if ( xml.response == true ) {
         window.location.href = 'novapagina.cfm'; 
    }

Esse novo trecho irá validar se o retorno da valida_form.cfm é positivo. Se for, então irá direcionar o usuário para a novapagina.cfm.

Claramente haveriam tantas outras soluções, mas vejo essas como as menos invasivas e que te atenderiam mais rápido.

Abraços.
Filipe Prado Christovam


Sergio da Rocha Junior

unread,
Nov 24, 2023, 5:02:13 AM11/24/23
to cfbrasil
Obrigado Filipe pela resposta.
Acho que a 2a opção é melhor pq essa é uma rotina para ser usada em todos os formularios.

A minha duvida é como eu dou o retorno OK ou NOK no final do valida_form.
Não estou acostumado com este formato, ou seja como eu informo no final da validação o true para o xml.response


Uma imagem contendo Logotipo

Descrição gerada automaticamente

 

http://daRocha.online

55 13 99696-2881

Sérgio da Rocha Júnior

 

Sergio da Rocha Junior

unread,
Nov 24, 2023, 5:16:54 AM11/24/23
to cfbrasil
Filipe, acho que eu não fui muito claro na dúviva.
Voce disse da rotina "ela poderia apenas retornar um valor booleano (true para validação OK e false para validação NOK).  
Como seria o código de retorno true ou false, estou acostumado a redicionar a pagina no final, pois uso pouco o JS

Uma imagem contendo Logotipo

Descrição gerada automaticamente

 

http://daRocha.online

55 13 99696-2881

Sérgio da Rocha Júnior

 

Filipe Prado

unread,
Nov 24, 2023, 11:38:07 AM11/24/23
to cfbr...@googlegroups.com
Sérgio.

Tomei a liberdade de fazer algumas alterações no seu código para chegar no resultado que você deseja.

Na valida_form.cfm eu fiz um IF para que, caso haja erro, ele imprima o erro na tela (igual você já fazia antes) e, caso não haja, ele apenas retorna um OK.

Na div_adm.js eu adicionei o trecho de código abaixo:
if (xml.readyState == 4 && xml.status == 200 && xml.response.trim() == 'OK'){
     window.location.href = 'novapagina.cfm';
}else{
    document.getElementById(divdest).innerHTML = xml.response;
}

Nele eu mantive a sua validação sobre o status do retorno da sua requisição ajax e adicionei mais uma condição que é se a resposta foi um simples "OK". Em caso positivo, então ele irá direcionar o usuário para a novapagina.cfm, em caso negativo, então ele manterá o comportamento anterior e irá imprimir a resposta na div "mostra".

Espero que tenha ficado claro.

Filipe Prado Christovam


Filipe Prado

unread,
Nov 24, 2023, 11:38:40 AM11/24/23
to cfbr...@googlegroups.com
Esqueci de mandar os arquivos rsrsrs

Filipe Prado Christovam

valida_form.cfm
div_adm.xjs

Sergio da Rocha Junior

unread,
Nov 24, 2023, 12:35:06 PM11/24/23
to cfbr...@googlegroups.com
Opa. Muito obrigado.
Vou ver aqui

Uma imagem contendo Logotipo

Descrição gerada automaticamente

 

http://daRocha.online

55 13 99696-2881

Sérgio da Rocha Júnior

 



Sergio da Rocha Junior

unread,
Nov 24, 2023, 1:13:02 PM11/24/23
to cfbrasil
Filipe, ficou perfeito.
Novamente muito obrigado

Uma imagem contendo Logotipo

Descrição gerada automaticamente

 

http://daRocha.online

55 13 99696-2881

Sérgio da Rocha Júnior

 

Reply all
Reply to author
Forward
0 new messages