Ir ao conteúdo
  • Cadastre-se

Javascript Form dinâmico envia dados para popup


Posts recomendados

Olá pessoal tudo bom?

 

Estou precisando montar um form dinâmico, ou seja, valores do action como variável e mandar os dados de sessão (session) para um popup com POST, sem submeter a tela principal.

 

achei um modelo de ajax mas não entendo muito e não sei como passar parâmetros para ele (ainda). Se alguém puder me ajudar agradeço:

 

$('#formPopUp').submit(function(event){
        event.preventDefault();
        var $form = $(this);
        $.ajax({
            type: 'POST',
            url: $form.attr('action'),
            data: $form.serialize(),
            success: function(data) {
                var $elm = $('<div/>').attr('id','formResult');
                $elm.html(data);
                $.magnificPopup({
                    items: {
                        src: $elm.html(),
                        type: 'inline'
                    }
                });
            },
            error: function(error) {
                // Do something with the error
            }
        });
    });

Esse form é só de teste para ver se manda valores, porque a página do action, queria passar os valores do link <a>:

 

<form id="formPopUp">
  <input name="input1" value="campo1" />
  <select name="input2">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
  </select>
  <textarea name="input3">textarea</textarea>

  
  <a href="www.algo" id="link" onclick="criarPopup();">Link</a>
</form>

 O JS que estava tentando montar:

function criarPopup(){
var newAction = document.getElementById("link").getAttribute("href"); 
document.getElementById("formPopUp").action = newAction; 
var obj = document.getElementById("formPopUp");
 var dados = new FormData(obj);
 
 newWindow = window.open(newAction,'PopUp','toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=yes, width=650, height=380');
     
}

 

Link para o comentário
Compartilhar em outros sites

Eu fiz o código abaixo e funcionou… Só queria saber o porque que se eu tirar o target =“0” ele não abre popup.

function abrePaginaPost() { prog = document.getElementById("link").value; //monta link + parametros prog = prog + '?tipousuario='+document.getElementById("tipousuario").value+ '&status='+document.getElementById("status").value+ '&codusuario='+document.getElementById("codusuario").value; //fim var form = document.getElementById('formPopUp'); form.action = prog; prop="left=0,top=0,toolbar=0,location=0,directories=0,status=1,menubar=0,scrollbars=yes,resizable=1,width=780,height=540"; janela=window.open("","0",prop).focus(); form.target = "0"; form.submit(); } </script>

 

Link para o comentário
Compartilhar em outros sites

  • Moderador

@MrDiniz  O seu exemplo inicial com  JQuery,  os dados do formulário começam aqui:

 

var $form = $(this);

A variável $form recebe o seletor This.  Pois refere-se a ele mesmo.

 

Agora a variável que realmente engloba todos os dados do seu formulário é:  

$form.serialize()

Onde o serialize() faz com que você envie os dados de forma serializada ao php.

 

Exemplo de como mandaria para o php: input1=texto_campo1&input2=1&input3=algumtexto

 

Agora o que tem de errado com o primeiro código?

O URL do ajax está errado, 

Foi colocado tudo no submit,   prefira usar a função on() 

 

Estes dois tópicos podem ajudar você a entender melhor o ajax

 

 

 

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...