关于java:如何使用jsp返回对AJAX的响应?

How to return response to AJAX using jsp?

本问题已经有最佳答案,请猛点这里访问。

我是jsp的新手,所以我想知道如何返回对AJAX的响应。
这是使用dojo和AJAX提交表单的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<script type="text/javascript">
        dojo.require("dojo.io.iframe");

        dojo.addOnLoad(function() {
            upload = function(  ) {
            dojo.io.iframe.send({
                form :"fileUploader",
                handleAs :"html", //response type from the server
                url :"url to jsp",//just example, not the real url
                load : function(response, ioArgs) {
                    console.log(response, ioArgs);
                    return response;
                },
                error : function(response, ioArgs) {
                    console.log("error");
                    console.log(response, ioArgs);
                    return response;
                }
            });
        };
        });

这是返回响应的jsp代码片段:

1
2
3
4
r ="<p >You have successfully uploaded your video.
</p>"
;
response.setContentType("text/html");
response.getWriter().write(r);

如果我只使用System.out.println(r),它会在控制台中打印结果,因此表单正在提交。 所以我认为问题是我返回响应的方式或者我用dojo处理它的方式。

提前致谢!


这里是简单的AJAX和JSP(没有jquery)来点击按钮并将时间回到输入框中。 查看"document.myForm.time.value = xmlhttp.responseText;"行,获取响应并在jsp中设置结果。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<html>
<head>
JSP and Servlet using AJAX
<script type="text/javascript">



function getXMLObject()  //XML OBJECT
{
   var xmlHttp = false;
   try {
     xmlHttp = new ActiveXObject("Msxml2.XMLHTTP")  // For Old Microsoft Browsers
   }
   catch (e) {
     try {
       xmlHttp = new ActiveXObject("Microsoft.XMLHTTP")  // For Microsoft IE 6.0+
     }
     catch (e2) {
       xmlHttp = false   // No Browser accepts the XMLHTTP Object then false
     }
   }
   if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
     xmlHttp = new XMLHttpRequest();        //For Mozilla, Opera Browsers
   }
   return xmlHttp;  // Mandatory Statement returning the ajax object created
}

var xmlhttp = new getXMLObject();   //xmlhttp holds the ajax object

function ajaxFunction() {
  var getdate = new Date();  //Used to prevent caching during ajax call
  if(xmlhttp) {

    xmlhttp.open("GET","ControlServlet?gettime=gettime" ,true);
    xmlhttp.onreadystatechange  = handleServerResponse;
    xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xmlhttp.send(null);
  }
}

function handleServerResponse() {
   if (xmlhttp.readyState == 4) {
     if(xmlhttp.status == 200) {
       document.myForm.time.value=xmlhttp.responseText; //Update the HTML Form element
     }
     else {
        alert("Error during AJAX call. Please try again");
     }
   }
}

</head>
<body>
<form name="myForm">
Server Time:<input type="text" name="time" />
<br />
<input type="button" onClick="ajaxFunction()" value="Click"/>
<br />
</form>
</body>
</head>
</html>

这是servlet:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException {
        StringBuffer requestURL = request.getRequestURL();
        if (request.getQueryString() != null) {
            requestURL.append("?").append(request.getQueryString());
        }
        String completeURL = requestURL.toString();

        if(request.getParameter("gettime")!= null && !request.getParameter("gettime").toString().equals("")){
        PrintWriter out = response.getWriter();
        Date df = new Date();
        out.println(df.getTime());
        }
    }

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

以下是运行上述代码后应该看到的内容:
enter image description here