Como sumeter formulario via post com ajax?

3 respostas
S

E aí galera beleza?

Consegui postar um formulario via get com ajax. Como fazer o mesmo via post? Alguém tem algum algoritmo na manga?

3 Respostas

F

Hmm… Tenta fazer o seguinte, na tag form:

..
function subOk(){
// Aki, vc invoca o método doPost do seu servlet.
//e depois:
document.forms[0].submit();
return false; // obrigando a não recarregar a pagina
}
..
<form ... onSubmit="javascript:subOk()">

Não sei se vai funcionar. Mas tenta ai.

Abraço

EDIT: Acho que não vai funcionar, pois quando executa o

document.forms[0].submit();
ele já inicia o carregamento da pagina…
:frowning:
Se vc conseguir vc posta ai mostrando como foi.

J

Seria isso?

function enviar(){
   var req = new XMLHttpRequest();
   req.open("POST", "pagina.jsp", true);
   req.onreadystatechange = function(){
      if(req.readyState==4){
         alert("Enviado...");
      }
   }

   params = "param1=valor1&param2=valor2";

   req.send(params);
}
S

Então galera, eu queria pegar um form, tipo eu qeria criar uma função generica pra enviar todos os forms com post

//Fun??o que transforma um form em uma string que pode ser enviada por get
/**
   idForm = id do form que ser? transformado
*/
function BuscaElementosForm(idForm) {
    var elementosFormulario = document.getElementById(idForm).elements;
    var qtdElementos = elementosFormulario.length;
    var queryString = "";
    var elemento;

    //Cria uma funcao interna para concatenar os elementos do form
    this.ConcatenaElemento = function(nome,valor) {
                                if (queryString.length>0) {
                                    queryString += "&";
                                }
                                queryString += encodeURIComponent(nome) + "=" + encodeURIComponent(valor);
                             };

    //Loop para percorrer todos os elementos
    for (var i=0; i<qtdElementos; i++) {
        //Pega o elemento
        elemento = elementosFormulario[i];
        if (!elemento.disabled) {
            //Trabalha com o elemento caso ele nao esteja desabilitado
            switch(elemento.type) {
                //Realiza a acao dependendo do tipo de elemento
                case 'text': case 'password': case 'hidden': case 'textarea':
                    this.ConcatenaElemento(elemento.name,elemento.value);
                    break;
                case 'select-one':
                    if (elemento.selectedIndex>=0) {
                        this.ConcatenaElemento(elemento.name,elemento.options[elemento.selectedIndex].value);
                    }
                    break;
                case 'select-multiple':
                    for (var j=0; j<elemento.options.length; j++) {
                        if (elemento.options[j].selected) {
                            this.ConcatenaElemento(elemento.name,elemento.options[j].value);
                        }
                    }
                    break;
                case 'checkbox': case 'radio':
                    if (elemento.checked) {
                        this.ConcatenaElemento(elemento.name,elemento.value);
                    }
                    break;
            }
        }
    }
    return queryString;
}

galera assim eu envio qualquer form com qualquer parametro por get, como transformar isso em post?

Criado 30 de novembro de 2006
Ultima resposta 30 de nov. de 2006
Respostas 3
Participantes 3