Jump to content
Fórum Script Brasil
  • 0

Javascript Post Redirect


Pooh

Question

Boa tarde galerinha do mal!

Estou com uma pulga atrás da orelha no seguinte.

Quero fazer um post redirect sem um formulario, não vou dizer que vasculhei a net pois não vasculhei, achei o básico de sempre

Ajax, e você ter um form na pagina associar os valores no campo e dar submit.

Porque não, até hoje, ninguen fez uma lib que por exemplo:

Lib.post( url , postVars );
Que redireciona você pra página com valores em POST ? pois fiz algo bem parecido mas criando um form dinamicamente, fazendo um append no body e dando submit. a página não apresenta um form "escondido" tosco pra kralho, acontece como se fosse um pacote. ex:
Package.post( 'minhaPagina.xxx' , postObject );
o postObject é um objeto simulando keys mapeadas, ou seja (name:value) ex: var postObject = new Object(); postObject.name = 'foo'; postObject.age = 123; ao final obtemos:
<form method="POST" action="minhaPagina.xxx" id="tokenGeradoPeloPackage"><input type="hidden" name="name" value="foo"/><input type="hidden" name="age" value="123"/></form>

E damos o submit dentro da propria requisição...nada fica visível tanto pro usuário quanto pro dev.

Empacotamos os dados em um form e mandamos, como no correio.

Bom estou mais querendo saber o porque "não" do que o porque sim.

Tenho certeza que os frameworks disponiveis já teriam feito se fosse interessante.

Grato ;)

Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 0

Bom ninguém se manifestou.

De duas uma:

Ou o assunto é ridiculamente simples e ninguém se deu ao trabalho de comentar.

Ou aqui no fórum como esperado só restaram apenas usuários interessados em resolverem seus problemas e irem embora.

Não trazem mais soluções porém problemas.

Apesar desse tópico não ser necessariamente um problema e sim um discussão da melhor maneira de se fazer algo, eu obviamente não esperaria tanto tempo assim

para tomar a minha decisão.

Estou usando a solução que propus mesmo.

Para quem interessar esse script faz nada mais nada menos que gerar dinamicamente um form do tipo POST, adicionar as propriedades do seu objeto como campos do tipo hidden e dar um submit nele, ficando completamente transparente e logicamente parecendo que demos apenas um window.location com postvars.

/*
 * @Author: Diego Yungh Costa <POOH/Poofy> 
 */
var Package;
if (!Package){
    Package = {};
}

(function(){

    /*Form constants*/
    var form_header = '<form method="@method" action="@action" id="@id">';
    var field_template = '<input type="hidden" name="@name" value="@value" />';
    var form_footer = '</form>';
    var Fields = new Array();
    
    function replace_token(name,value,token_string)
    {
        return String(token_string).replace('@'+name, value);
    };
    
    function addValue(name,value)
    {
        Fields.push(replace_token('name',name,replace_token('value', value, field_template)));
    };
    
    function build_form(method,action)
    {
        var form = replace_token('action',action,replace_token('method',method,form_header));
        var data = '';
        for ( var field in Fields)
            data += Fields[field];
        return form+data+form_footer;
    };
    
    Package.post = function (url,postObject)
    {
        for ( var data in postObject)
            addValue(data,postObject[data]);
        var rndID = Math.ceil(Math.random()*777);
        var form =    replace_token('id',rndID,build_form('POST',url));
        document.getElementsByTagName('body')[0].innerHTML += form; //supondo que temos um body...
        document.getElementById(rndID).submit();
    };
    
}());
Uso:
&lt;script src='.../package.js' type="text/javascript"></script>
&lt;script>

//uso 1
Package.post('www.suaURL.com.br',{nome:'Diego',idade:123});

//uso 2
var postVars = new Object();
postVars.nome = 'Fulano';
postVars.idade = 2131231231;
Package.post('www.suaURL.com.br',postVars);

</script>

Não espere que ele serialize arrays nem objetos nem nada do gênero.

Se ao invés de um quebra galho ele virasse uma solução com certeza eu daria suporte a esse tipo de operação, inclusive melhoraria algumas coisas

mas...está funcionando, e provavelmente eu vou rever o fluxo da minha página pra uma hora retirar essa gambi que por hora é necessária.

Qualquer dúvida poste ai ^^

Abraços do Poofy

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...