2 Stimmen

Die Ajax-Funktion gibt immer eine 0 zurück und fährt nicht weiter fort

Ich habe den Skriptcode:

     var xmlHttp=null;
    function GetXmlHttpObject()
    {

        try
        {
            // Firefox, Opera 8.0+, Safari
            xmlHttp=new XMLHttpRequest();
        }
        catch (e)
        {
            //Internet Explorer
            try
            {
                xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
            }
            catch (e)
            {
                xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
            }
        }
        return xmlHttp;
    }
    function popSubCategory(){
        xmlHttp=GetXmlHttpObject()
        if (xmlHttp==null)
        {
            alert ("Browser does not support HTTP Request")
            return;
        }

        var url="<%= request.getContextPath()%>/populatePropertySubCategory.action";
          alert(url);

        xmlHttp.onreadystatechange=stateChangedmp();
        xmlHttp.open("POST",url,true);
        xmlHttp.send(null);
    }
    function stateChangedmp(){

        alert("Hello "+xmlHttp.readyState);
        if(xmlHttp.readyState==4)
        alert("lk"+xmlHttp.responseText);
    }

Und meine Action-Methode ist

public String populatePropertySubCategory() {
        System.out.println("sub property called " );

        String errorXml = "This is a Sample to Check";

        response.setContentType("text/html");
        response.setHeader("Cache-Control", "no-cache");
        try {
            response.getWriter().write(errorXml);
        } catch (IOException ioe) {
            ioe.printStackTrace();
        }

        return SUCCESS;

    }

Meine Aktionsunterstützung für XML lautet

            populatePropertySubCategory

           submitProperty

Jetzt, wenn ich diesen Code aufrufe, wird nur 0 in einem Alert angezeigt und der Antworttext wird nicht gedruckt.

Ich habe bereits das ServletResonseAware-Interface implementiert.

1voto

nick_27 Punkte 66

Probieren Sie einfach, die Javascript-Methode von

xmlHttp.onreadystatechange=stateChangedmp();  

zu ändern

xmlHttp.onreadystatechange=function myFun {stateChangedmp();}

0voto

Andrea Ligios Punkte 47882

class-Attribut benötigt den voll qualifizierten Namen der Klasse, einschließlich des Pakets.

Und Sie verwenden nur einen Interceptor, nicht den gesamten Stack plus den angepassten Validation Interceptor;

Ändern Sie sie zu:

            populatePropertySubCategory

     submitProperty

P.S.: Dies sind die offensichtlichsten Probleme, aber es könnten auch andere im JavaScript und im Ergebnis Tiles-Teil geben :&

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X