Mam bardzo prostą aplikację internetową, z którą mam kłopoty. Mam dwa pliki.

Hellowsorld.jsp:

int result = 0;
out.println("<html><body>"+result+"</body></html>");

Gethellowsorld.jSp:

<html><head>
<script type="text/javascript>
 function getHelloWorld() {
                $.get("/helloWorld.jsp, function(data) {

                    var temp = $.trim(data);
                    temp = temp.text(); //have also tried temp.html() and a few other things
                    $('#status').val(temp);

                });
            }
            window.onload = function() {
                getHelloWorld();
            };

</script></head>
<body><div id='status'></div></body></html>

Mój problem jest to: kiedy ładuję Gethellowsorld.jsp, albo nic nie otrzymuję (kod powyżej wytwarza bez wyjścia), albo otrzymuję wydrukowany "0". Rezultatem, który próbuję osiągnąć, jest mieć tylko "0" wydrukowane bez znaczników HTML. Nie mogę użyć prostego wyszukiwania i wymiany rozwiązania, ponieważ potrzebuję tego prostego kodu do pracy z znacznie bardziej skomplikowaną odpowiedzią. Przypuszczam, że mogę zrobić REGEX, ale wolałbym nie wyłączyć koła, jeśli ma już funkcję, aby sobie z tym poradzić.

Czy jest jakiś (prosty) sposób, aby usunąć znaczniki HTML z połączenia AJAX, jak powyżej?

0
JacobyDrexelhand 16 sierpień 2014, 02:01

2 odpowiedzi

Najlepsza odpowiedź

Weź udział w HTML i umieść go do obiektu jQuery (co spowoduje, że jQuery umieści go w dokumencie fragmentu i analizuje HTML), a następnie wyodrębnij tekst z obiektu jQuery:

       function getHelloWorld() {
            $.get("/helloWorld.jsp", function(data) {

                var temp = $(data).text();
                $('#status').val(temp);

            });
        }
        window.onload = getHelloWorld;

Działający demo: http://jsfiddle.net/jfriend00/9HXRQGZN/


Można się zastanawiać, dlaczego wracasz HTML z serwera, jeśli chcesz tylko numer. Być może powinieneś powrócić do JSON, który jest tylko liczbą, a następnie jQuery przetwarza odpowiedź JSON dla Ciebie i dał ci tylko żądaną liczbę.

0
jfriend00 16 sierpień 2014, 00:36

Jeśli używasz JSP, lepiej dołączyć stronę JSP w ten sposób (po stronie serwera):

<body>
    <div id='status'>
        <jsp:include page="helloWorld.jsp"/>
    </div>
</body>

Jeśli chcesz użyć JS, spróbuj tego:

        $.get("/helloWorld.jsp", function(data) 
        {
            document.getElementById("status").innerHTML = data;
        });

Ale jeśli chcesz użyć jquery, spróbuj tego:

$('#status').load("helloWorld.jsp");

Po uwzględnieniu powyżej pasuje do tagów HTML i ciała.

0
Mikhail Korolev 16 sierpień 2014, 11:45