Enviado dados via POST!

1 resposta
J
DAe galera!!! Eu tenho um combo na minha aplicação web e ele chama uma função javascript( ajax ) no onChange, eu passo como parâmetro o valor desse combo!, A questão é que está dando um erros estranho com o Tomcat( pelo menos é o que parece!! ), pois ao verificar o
if (xmlhttp.readyState == 4){
, ele não entra nesse if, mandei imprimir o
xmlhttp.responseText
, e ele me retorna a seguinte resposta!!
java.lang.IllegalArgumentException

	at javax.servlet.http.HttpUtils.parseQueryString(HttpUtils.java:151)

	at javax.servlet.http.HttpUtils.parsePostData(HttpUtils.java:254)

	at org.apache.tomcat.util.RequestUtil.readFormData(RequestUtil.java:101)

	at org.apache.tomcat.core.RequestImpl.handleParameters(RequestImpl.java:719)

	at org.apache.tomcat.core.RequestImpl.getParameterValues(RequestImpl.java:259)

	at org.apache.tomcat.core.RequestImpl.getParameter(RequestImpl.java:250)

	at org.apache.tomcat.facade.HttpServletRequestFacade.getParameter(HttpServletRequestFacade.java:223)

	at org.apache.jasper.servlet.JspServlet.preCompile(JspServlet.java:437)

	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:480)

	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

	at org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:405)

	at org.apache.tomcat.core.Handler.service(Handler.java:287)

	at org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)

	at org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:812)

	at org.apache.tomcat.core.ContextManager.service(ContextManager.java:758)

	at org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpConnectionHandler.java:213)

	at org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java:416)

	at org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java:501)

	at java.lang.Thread.run(Thread.java:484)

O que eu quero fazer com o Ajax, é simplesmente enviar um campo( que na verdade são tres dados concatenas via POST) para capturá-lo por uma classe que vai fazer o tratamento adequado com esses dados!
Segue o código!!

function createRequestObject() {
  var tmpXmlHttpObject;

    // Dependendo do tipo de brownser, cria um objeto diferente
    if (window.XMLHttpRequest) {
        // Mozilla, Safari
        tmpXmlHttpObject = new XMLHttpRequest();

    } else if (window.ActiveXObject) {
        // IE ustiliza um outro objeto(ActiveX)
        tmpXmlHttpObject = new ActiveXObject("Microsoft.XMLHTTP");
    }

    if (!tmpXmlHttpObject) {
         alert('Cannot create XMLHTTP instance');
         return false;
    }


    return tmpXmlHttpObject;
}

// Atribui o objeto criado á variável http
var xmlhttp = createRequestObject();

/* A função acima é a que valida se navegador tem suporte AJAX e essa função abaixo é a que submete os dados */
function envia(valor) {

    if(validaDados(valor) == true ) {
       var url = "GraficoIndicador.jsp?";
       alert('1');
       xmlhttp.open("POST",url,true);
          alert('2');

       //xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
       xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=iso-8859-1");
       xmlhttp.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
       xmlhttp.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
       xmlhttp.setRequestHeader("Pragma", "no-cache");
       xmlhttp.setRequestHeader("Content-length", valor.length);



          alert('3');

       xmlhttp.onreadystatechange = function() {

       alert('4' +  xmlhttp.responseText);
          if (xmlhttp.readyState == 4){
             //var valor = xmlhttp.responseText;
          } else {
            alert('Erro - ' + valor);
          }
       }
       /* Envia os dados contidos na variavel texto como se fosse um parametro de um GET */
       xmlhttp.send(valor);
    }
}
Como eu só quero enviar os dados que o usuário informou, eu precisaria também fazer essa linha que tá comentada?
//var valor = xmlhttp.responseText;

Valeu galera.. fiquem com Deus!!!

1 Resposta

E

Boa noite!!

O Erro exibido é do Java e não do AJAX!
Veja se o seu JSP/Servlet esta correto! Tente executar o teu JSP/Servlet sem ser chamada no AJAX!
Tenho feito muito isto quando tenho problemas!

[]´s,

Garcia.

Criado 6 de março de 2007
Ultima resposta 22 de mar. de 2007
Respostas 1
Participantes 2