Проблема при выполнении AJAX - PullRequest
0 голосов
/ 30 ноября 2009

Я пытаюсь сделать простое приложение, используя Ajax и сервлет. Но когда я пытался выполнить приложение, оно не работает. Пожалуйста, пройдите код и дайте мне знать, в чем проблема?

function createRequest()
    {
        alert("hai createRequest()");
        try
        {
            req=new XMLHttpRequest();

        }
        catch(trymicrosoft)
        {
            try
            {
                req=new ActiveXObject("Msxml2.XMLHTTP");
            }
            catch(othermicrosoft)
            {
                try
                {
                    req=new ActiveXObject("Microsoft.XMLHTTP");
                }
                catch(failed)
                {
                    req=null;
                }
            }

        }
        if(req==null)
            alert("req==null");

    }
    function startRequest()
    {
        alert("hai startRequest()");
        createRequest();
        alert("hai created Request()");
        var username=document.getElementById("user").value;
        req.open("get","http://localhost:8080/login/CheckLogin?user="+username,true);
        req.onreadystatechange=handleStateChange;
        alert("hai returned from handle state change");
        req.send(null);

    }

    function handleStateChange()
    {
        alert("hai handleStateChange()");
        if(req.readyState==4)
        {
            if(req.status==200)
            {
                var message=req.responseXML.getElementsByTagName("valid")[0].childNodes[0].nodeValue;
                document.getElementById("results").innerHTML=message;
            }
            else
            {
                alert("Sorry status failed");
                document.getElementById("results").innerHTML="Sorry problem in status";
            }
        }
        else
        {
            alert("Sorry readyStatus failed");
            document.getElementById("results").innerHTML="Sorry problem in readyState";
        }
    }

Вышеуказанные функции написаны на Javascript и в сервлете

package com.assignment.login;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class CheckLogin extends HttpServlet
{
    public void doGet(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException
    {
        System.out.println("Hai i have entered into servlet");
        String userId=request.getParameter("user");
        if(userId!=null && !userId.equals("jeya"))
        {
            response.setContentType("text/xml");
            response.getWriter().write("<valid>U can use this id</valid>");
        }
        else
        {   
            response.setContentType("text/xml");
            response.getWriter().write("<valid>U cannot use this id</valid>");
        }
    }


    public void doPost(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException
    {
        doGet(request,response);
    }
}

Но на выходе печатаются следующие оповещения,

Hai start request
Hai create request
Hai created request
Hai returned from handle state change
hai handle state change
sorry readyStatus  failed
hai handle state change
sorry readyStatus  failed
hai handle state change
sorry readyStatus  failed
hai handle state change
sorry status  failed

Мой web.xml,

<web-app>
<servlet>
    <servlet-name>CheckLogin</servlet-name>
    <servlet-class>com.assignment.login.CheckLogin</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>CheckLogin</servlet-name>
    <url-pattern>/CheckLogin</url-pattern>
</servlet-mapping>

В сервлете я напечатал «Я вошел в сервлет», и он не печатается в окне сервера. Так в чем же проблема, и, пожалуйста, дайте мне предложения по ее решению ... Заранее спасибо .. .

EDIT: это исключение, возникающее, когда я пытаюсь выполнить указанное выше приложение. Но класс CheckLogin находится в нужном месте ... Но тот же код работает в Eclipse. Поэтому, пожалуйста, кто-нибудь, скажите мне, в чем может быть проблема ??? Запрашиваемый ресурс (/ login / CheckLogin) недоступен.

Ответы [ 3 ]

1 голос
/ 30 ноября 2009

проверьте, соблюдали ли вы правильные соглашения об именах, потому что я думаю, что в коде нет ошибок.

1 голос
/ 30 ноября 2009

вы используете неправильный URL:

req.open("get","http://localhost:8080/login/CheckLogin?user="+username,true);

Я не знаю, какой сервер вы используете, но достаточно будет использовать CheckLogin:

req.open("get","CheckLogin?user="+username,true);

или req.open ( "получить", "/ Войти / CheckLogin пользователь =?" + имя пользователя, правда);

Возможно, сервер на локальном хосте: 8080 недоступен.

0 голосов
/ 30 ноября 2009

Я думаю, вы должны определить переменную req в верхней части страницы javascript вне функций. Как,

var req;

function yourFunctions(){

.
.
.
.


   }

Попробуйте это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...