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
<form name="nomedoForm" id="nomedoForm" action="meuServlet" method="post">
Criei uma function
function loadServletOnClick(){
document.nomedoForm.submit();
}
E por fim, chamei minha action no meu href
a href="javascript:loadServletOnClick();">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.