难以从AJAX响应中剥离HTML标记

时间:2014-08-15 22:01:57

标签: javascript jquery html ajax jsp

我有一个非常简单的Web应用程序,我遇到了一些麻烦。我有两个文件。

的helloWorld.jsp:

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

getHelloWorld.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>

我的问题是这样的:当我加载getHelloWorld.jsp时,我得不到任何东西(上面的代码没有产生输出),或者我打印出“0”。我想要实现的结果就是在没有HTML标签的情况下打印出“0”。我不能使用简单的查找和替换解决方案,因为我需要这个简单的代码来处理更复杂的响应。我想我可以做正则表达式,但如果已经有一个函数来处理它,我宁愿不重新发明轮子。

是否有任何(简单)方法从AJAX调用中剥离HTML标记,如上所述?

2 个答案:

答案 0 :(得分:1)

获取HTML并将其放入jQuery对象(这将导致jQuery将其放入文档片段并解析HTML),然后从jQuery对象中提取文本:

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

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

            });
        }
        window.onload = getHelloWorld;

工作演示:http://jsfiddle.net/jfriend00/9hxrqgzn/


如果您只想要一个号码,有人可能会想知道为什么要从服务器返回HTML。也许您应该返回JSON而不仅仅是数字,然后jQuery将为您处理JSON响应,并为您提供所需的数字。

答案 1 :(得分:0)

如果您使用JSP,最好以这种方式包含jsp页面(在服务器端):

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

如果你想使用JS试试这个:

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

但是如果你想使用JQuery试试这个:

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

当你包括上面的内容时,它会删除html和body标签。