Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

esconder parâmetros na url

Pessoal bom dia! alguém pode me ajudar com essa situação? ao fazer o meu deleta e altera via post estou trazendo o ID na url e ai eu não acho legal, oq eu poderia fazer para resolver esse problema? esconder esse ID do usuário final.

algum exemplo prático ou conceitual?

http://localhost:8080/aplicacao/excluirJogador?idJogador=10
4 respostas

Você poderia esconder esse valor em um <input type="hidden" ...> no formulário que contém o botão de envio.

Olá Rodrigo,

para passar informações escondidas da url, a sua requisição precisa ser do tipo Post. O problema é que muitas vezes quando vamos fazer um comportamento na tela como um deletar, colocamos aquela tag <a> para fazer um hyperlink que o usuário apenas clica. E por especificação do HTML, o <a href="..."> é sempre do tipo Get, então os parâmetros acabam indo na url.

Um jeito de contornar isso é você fazer com que o seu hyperlink esteja dentro de um form do tipo Post, os parâmetros que você quer enviar são inputs do tipo hidden e que o form será disparado quando o usuário clica no hyperlink. Tem este link com um exemplo de como isso pode ser feito.

Cássio, Lucas entendi, testei aqui e realmente esta ok, agora olha outra situação que tenho abaixo, e para a

<td>

qual a palavra secreta?

href='carregaJogador?idJogadores=${jogadores.idJogadores}'
                                            <tbody>
                                                <c:forEach items="${listaJogadores}" var="jogadores">
                                                    <tr>
                                                        <td style="display:none;">${jogadores.idJogadores}</td>
                                                        <td>${jogadores.nomeJogadorTemp}</td>
                                                        <td>${jogadores.nivelJogador}</td>
                                                        <td>${jogadores.caracteristica}</td>
                                                        <td>${jogadores.mao}</td>
                                                        <td>${jogadores.backhand}</td>
                                                        <td><a href='carregaJogador?idJogadores=${jogadores.idJogadores}'><i class="fa fa-pencil"></i></a></td>
                                                        <td><a onclick="deletaJogador(${jogadores.idJogadores})"><i class="fa fa-trash-o"></i></a></td>                             
                                                    </tr>
                                                </c:forEach>
                                            </tbody>
solução!

Opa, depois de quase não dormir consegui resolver da seguinte forma, queria ter conseguido sozinho, mas esse link me ajudou.

http://blog.rdtecnologia.com.br/php/passando-dados-via-post-em-javascript/

                                        <table class="table">
                                            <thead>
                                                <tr>
                                                    <th>Modalidade</th>
                                                </tr>
                                            </thead>
                                            <tbody>
                                                <c:forEach items="${listaModalidades}" var="modalidades">
                                                    <tr>
                                                        <td style="display:none;">${modalidades.idModalidades}</td>
                                                        <td>${modalidades.nomeModalidadeTemp}</td>
                                                        <td><a onclick="sendPost('carregaModalidade', {idModalidades: '${modalidades.idModalidades}'});"><i class="fa fa-pencil"></i></a></td>
                                                        <td><a onclick="deletaModalidade(${modalidades.idModalidades})"><i class="fa fa-trash-o"></i></a></td>
                                                    </tr>
                                                </c:forEach>
                                            </tbody>
                                        </table>

JS

if (!window.sendPost) {
    window.sendPost = function (url, obj) {
        //Define o formulário
        var myForm = document.createElement("form");
        myForm.action = url;
        myForm.method = "post";

        for (var key in obj) {
            var input = document.createElement("input");
            input.type = "text";
            input.value = obj[key];
            input.name = key;
            myForm.appendChild(input);
        }
        //Adiciona o form ao corpo do documento
        document.body.appendChild(myForm);
        //Envia o formulário
        myForm.submit();
    };
}