Chamar método doPost via javascript

Boa tarde pessoal tudo bem?

É o seguinte, estou desenvolvendo um servlet e eu gostaria de chama-lo no meu jsp…
Eu consegui fazer com que ele seja chamado utilizando o form… O que eu quero é chamá-lo via javascript, porém chamar o método doPost do meu servlet.

Tenho a seguinte estrutura.

Minha function

function loadServletOnClick(){
	document.location.href='<%=request.getContextPath()%>' + "/loginController";
	
}

E meu href onde indico para ele chamar a function

<a >Clique Aqui</a>

Ele funciona, só que chama o doGet. Tem como eu chamar o doPost?

Obrigada

Mais complexo que o desejado, mas a única maneira viável que encontrei…

var xmlHttp

function MakeXmlHttpObject()
{
        var xmlHttp = null;
        try
        {
                //XmlHttpRequest para Firefox, Opera, Safari e derivados.
                xmlHttp = new XMLHttpRequest();
                alert('criado');
        }
        catch (e)
        {
                //XmlHttpRequest para Internet Explorer.
                try
                {
                        // Internet Explorer 6.0+
                        xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
                }
                catch (e)
                {
                        // Internet Explorer.
                        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
                }
        }
        return xmlHttp;
}

function stateChanged()
{
        if (xmlHttp.readyState == 4)
        {
                alert('reload');
                window.location.reload();
        }
}

function Gravar(q)
{
        xmlHttp = MakeXmlHttpObject();
       
        if (xmlHttp == null)
        {
                alert("O browser nãi suporta AJAX!");
                return;
        }
       
        var parametros = "write=" + encodeURI(code.getCode());
        alert(parametros);
        alert(q);
        xmlHttp.onreadystatechange = stateChanged;
        xmlHttp.open("POST",q, true);
        xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlHttp.setRequestHeader("Content-lenght", parametros.lenght);
        xmlHttp.send(parametros);
}

Ironicamente tirado daqui http://www.portugal-a-programar.org/forum/index.php?topic=25285.0

É… realmente é bem complexo…

mas drsmachado, muito obrigada pela ajuda…

Eu não usei o código, mas encontrei a solução dentro do link que você me passou…

Fiz da seguinte forma:

  • coloquei o form normal no inicio do meu body
&lt;form name=&quot;nomedoForm&quot; id=&quot;nomedoForm&quot; action=&quot;meuServlet&quot; method=&quot;post&quot;&gt; 

Criei uma function

function loadServletOnClick(){
	document.nomedoForm.submit();
	
}

E por fim, chamei minha action no meu href

a href=&quot;javascript:loadServletOnClick();&quot;&gt;Clique Aqui

Funcionou PERFEITAMENTE…

Não sei se essa é a forma correta mas…rsrs

Muito obrigada pela ajuda

Eu, sinceramente, acho que o método certo é o que funciona (de preferência dentro do especificado pelo cliente)…

POST HTTP só é possível invocar via FORM mesmo dentro de um HTML FORM ou usando requisições JS via AJAX.
Veja que via document.location.href só vai executar o GET pq seria como digitar um endereço no navegador e isso dispara somente um GET na especificação HTTP.

Mas o método submit() irá executar o form e apontar para o local apontado na action no method indicado…

drsmachado, não entendi o que quis dizer no último post :S

Quando você executa a function que criou

function loadServletOnClick(){  
    document.nomedoForm.submit();  
      
} 

O método submit() vai invocar a página requisitada, incluindo os parâmetros na requisição, através do método post.