Enviar dados por 'POST' para servlet via Jquery

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

Brother vc conseguiu resolver esse problema?? Eu to com a mesma dúvida…

Ola am igo, sim ja resolvi de outra forma.
Mas vc nesse caso, vc precisa implementar o metodo doOptions do servlet e devolcer no header da resposta (response) os headers da especificação (CORS) Access-Control-Allow-Origin
Pesquise sobre CORS XMLHttpRequest Ajax e vc vai descobrir o problema e como resolver.
Ou pesquise sobre o Access-Control-Allow-Origin.

Fica a dica
Abraço

Ola Paulo

Estou com o mesmo problema

Vc pode postar os headers de request e reponse da solução que vc achou

Obrigado