Olá amigos,
Estou precisando enviar alguns parametros para um servlet via ajax com jquery ou javascript puro mesmo, porem via POST.
O que ocorre é que com javascript puro ou jquery, o script roda porem nao chega a executar o servlet. A requisição nao entra no método doPost do servlet.
Os dados que precisam ser postados não estarão em um form. serão atributos capturados em variaveis no javascript mesmo.
Se eu remover o header content type da requisição o servlet é chamado porem nao seta os valores dos atributos. :shock:
Já usei $.post e $.ajax do jQuery e mesma coisa!! Não chama o servlet ou nao seta os atributos!!
segue o codigo de teste:
<html>
<head>
<title> .:: Teste Post ::.</title>
<script>
function postWithAjax() {
req = new XMLHttpRequest();
url = "http://localhost:8888/coletor"; // endereço do servlet
params = "id=1981"; // parametro de teste
req.open("POST", url, true);
req.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); // se eu removo essa linha do content o servlet é chamado porem nao seta os parametros
req.setRequestHeader("Content-length", params.length);
req.setRequestHeader("Connection", "close");
req.onreadystatechange = function() {
if(req.readyState == 4 && req.status == 200) {
alert(req.responseText);
}
}
req.send(params);
}
</script>
</head>
<body onload="postWithAjax();">
</body>
</html>
O servlet de teste:
// imports aqui
public class Coletor extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException {
String id = request.getParameter("id"); // parametro que deve vir da requisição via ajax com post
response.setStatus(HttpServletResponse.SC_OK);
PrintWriter out = response.getWriter();
out.print("<html><label>"+id+"</label></html>");
out.close();
}
public void doGet(HttpServletRequest req,HttpServletResponse res) throws ServletException,IOException{
doPost(req,res);
}
}
Se alguem tiver uma idéia do que ocorre fico grato pela ajuda.
Obrigado