Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Servlet и AJAX


Автор: StandartenFuhrer 1.11.2008, 02:44
Запарился я уже думать...чувствую мелочь какая-то не немогу понять в чем трабл...
Собста...
Код

if(request.getParameter("qInd")!=null)
{
    qInd=Integer.parseInt(request.getParameter("qInd"));
    qInd++;
    response.setContentType("text/xml");
    response.setHeader("Cache-Control", "no-cache");
    out.write("<quest>"+ .... +"</quest>");
   }


Код

var xmlHttp;
function createXmlHttpRequest()
{
       if(window.ActiveXObject)
       {
        xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
      }

    else if(window.XMLHttpRequest)
    {
        xmlHttp=new XMLHttpRequest();
     }

}
function handleStateChange()
{
    if(xmlHttp.readyState==4)
    {
        if(xmlHttp.status==200)
            {
                 var messageObj=xmlHttp.responseXML.getElementsByTagName("quest")[0];
                 var message=messageObj.childNodes[0].nodeValue;
               
                alert (message);
            }
        else
        {
           alert("Error loading pagen"+ xmlHttp.status +
":"+xmlHttp.statusText);
        }
    }
}
function startRequest(qInd)
{
  createXmlHttpRequest();
  getParam();
  var u1=qInd;
  var u2=qVar;
  xmlHttp.open("POST","http://localhost:8080/HTest/testpage?qInd="+u1+"&qVar="+u2,true);
  xmlHttp.setRequestHeader("content-type","application/x-www-form-urlencoded");
  xmlHttp.onreadystatechange=handleStateChange;
  xmlHttp.send(null);
  qVar=-1;

  
}

итого... сервер обрабатывает запрос...но при проверке выбрасывает null

Автор: Keyo 1.11.2008, 11:10
При какой проверке? Вы пользуетесь плагином для FF называется firebug? Попробуйте, очень удобно

Автор: StandartenFuhrer 1.11.2008, 12:00
Щас попробую... 
Проверка...хм..сложно это назвать проверкой...просто алерт на ответ сервлета...

Автор: Keyo 1.11.2008, 12:10
StandartenFuhrer, firebug, вкладка Net, можно увидеть все транзакции

Автор: StandartenFuhrer 1.11.2008, 13:35
Спасибо...камрады...поигрался...
Получаеть что у меня в responseText находить весь файл *.js  smile 
А сервлет не передает xml попрежнему...

Автор: Keyo 1.11.2008, 13:40
Может попробуешь какую-нибудь библиотеку? prototype, motools, jQuery?

Автор: StandartenFuhrer 3.11.2008, 19:04
суть в том...что я прикреплять *.js скрипт и он забивал все команды
Код

 response.setContentType("text/xml");


Автор: fronya 8.11.2008, 19:26
Дело в том, что вы через Ajax не правильно отправляете запрос методом "POST" НЕЛЬЗЯ В СТРОКЕ URL ПЕРЕДАВАТЬ ПАРАМЕТРЫ методом POST параметры передаются внутри http пакета, а вот если б ты использовал метод метод GET то это может быть и сработало, в итоге сервер переправляет данный запрос как "GET" сервлету к методу doGet(res,req) или вообще его не обрабатывает. 


Написал по своему, вот код может поймёшь что у тя была за проблема:
Код

<script language="javascript" type="text/javascript">
    var request = false;
    
    try {
        request = new XMLHttpRequest();
    } catch (trymicrosoft) {
        try {
            request = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (othermicrosoft) {
            try {
                request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (failed) {
                request = false;
            }
        }
    }
    if (!request)
        alert("Error initializing XMLHttpRequest!");
        
  
    function getChoisenPath() {
        var u1="par1";
var u2="par2";
        var url = ""http://127.0.0.1:8080/HTest/testpage";
        var msg = "qInd="+u1+"&qVar="+u2;
        request.open("POST", url, true);
        request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        
        request.onreadystatechange = callback;
        
        request.send(msg); 
    }
    function callback() { 
        if (request.readyState==4) {
            if (request.status==200) {
          
    
                 alert(request.responseText);
                 
                 
                }
             else
                alert("WARNING  status is " + request.status);
        }
   } 

    </script>  


И возможно была у тебя ошибка в Servlete до конца не вдовался там в подробности...

Код Java (часть сервлета):
Код



protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
String qInd= request.getParameter("qInd");
    String qVar= request.getParameter("qVar");
String msg ="<qInd>" + nick + "</qInd>" + "<qVar>" + qVar+ "</qVar>";
    response.setContentType("text/xml;charset=UTF-8");
    response.setHeader("Cache-Control", "no-cache");
    response.getWriter().write(msg);

}



У меня работает. Желаю удачи!!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)