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); } } |
以下是运行上述代码后应该看到的内容: