Como usar POST no XMLHttpRequest

3 respostas
yoshikichi

Gostaria de utilizar POST em vez de GET, no XMLHttpREquest, mas, como eu seto os atributos para post?
No get sa anexo na url, mas como fazer em JAVASCRIPT?

Segue o codigo:

var req;

function insere(){

if(window.XMLHttpRequest){

req = new XMLHttpRequest();

}else if(window.ActiveXObject){

req = new ActiveXObject.(Microsoft.XHTTP);

}

//parametros

nom = document.getElementById(nome).value;

em = document.getElementById(email).value;
//como fazer por post?
url = "unijales.java?nome="+nom+"&email="+em;
req.open("Get",url,true);
req.onreadystatechange=callback;
req.send(null);

}

function callback(){

if(req.readyState==4){

if(req.status==200){

alert(todo processo ok);

}

}

}

3 Respostas

E

Não sei se entendi bem a sua dúvida , de qualquer forma aqui vai.

url = "unijales.java";
dados = "nome="+nom+"&email="+em; 
req.setRequestHeader('Content-Type' , 'apllication/x-www-form-urlencoded');
req.open("POST",url,true);
req.send(dados);
yoshikichi
Ehb:
Não sei se entendi bem a sua dúvida , de qualquer forma aqui vai.
url = "unijales.java";
dados = "nome="+nom+"&email="+em; 
req.setRequestHeader('Content-Type' , 'apllication/x-www-form-urlencoded');
req.open("POST",url,true);
req.send(dados);
Então funcionou, valew. MAs tem um problema, qndo passo parametros grande ele nao chega a servlet destino. qndo passo parametros menores, dois ou tres caracteres para cada parametro vai. pq será? vou colocar o codigo aqui:
var req;
function insere(){
	if(window.XMLHttpRequest){
		req = new XMLHttpRequest();
		alert("criada o XMLHttpREquest");
	}else if(window.ActiveXObject){
				req = new ActiveXObject.("Microsoft.XHTTP");
		}
	//parametros
	nom = document.getElementById("nome").value;
	alert(nom);
	em = document.getElementById("email").value;	
	sen = document.getElementById("senha").value;
	cid = document.getElementById("cidade").value;	
	uf = document.getElementById("estado").value;	
	
	url = "insereUsuario.java";
	dados = "para=control.command.InsereUsuario&nome="+nom+"&email="+em;
	dados=dados+"&senha="+sen+"&cidade="+cid+"&estado="+uf;
	alert(dados);
	req.open("POST",url,true);
	req.setRequestHeader('Content-Type' , 'multipart/form-data');  
	req.send(dados);
	req.onreadystatechange=callback;
}

function callback(){
	if(req.readyState==4){
		alert("readyState==4 ok");
		if(req.status==200){
			alert("todo processo ok");
		}
	}

}
a servlet
public class FrontControl extends HttpServlet{
	
	
	public void service(HttpServletRequest req, HttpServletResponse res)
	throws ServletException,IOException{
		
		try {
			System.out.println(req.getParameter("email"));
			Class refle = (Class) Class.forName(req.getParameter("para").toString());
			Command command = (Command) refle.newInstance();
			System.out.println("Chamando o objeto command");
			command.execute(req, res);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			throw new ServletException(e);
		}
		
	}

}

a classe

public class InsereUsuario implements Command{

	
	public void execute(HttpServletRequest req, HttpServletResponse res)
			throws Exception {
		
		Usuario usuario = new Usuario();
		usuario.setNome(req.getParameter("nome"));
		usuario.setEmail(req.getParameter("email"));
		usuario.setSenha(req.getParameter("senha"));
		usuario.setCidade(req.getParameter("cidade"));
		usuario.setEstado(req.getParameter("estado"));
		Session sessionh = HibernateUtil.getSession();
		UsuarioDao usudao = new UsuarioDao(sessionh);
		Transaction tran= sessionh.beginTransaction();
		usudao.save(usuario);
		tran.commit();
		System.out.println("usuario salvo\n"+usuario.getNome());
		RequestDispatcher rd = req.getRequestDispatcher("sucesso.jsp");
				rd.forward(req, res);
	}

}
yoshikichi

Tipo nem chega a chamar a servlet
Os parametros q eu falo, é por exemplo passara nome="ab"
senha=“ab”, pequenos entende, qndo passo grande como nome=“sei la o q”, não vai.

Se me ajudar ai valew

Criado 8 de setembro de 2008
Ultima resposta 9 de set. de 2008
Respostas 3
Participantes 2