2013-06-20 2 views
0

Я новичок в jsp, поэтому я хотел бы знать, как вернуть ответ AJAX. Это код для отправки формы с помощью додзё с AJAX:Как вернуть ответ на AJAX с помощью jsp?

<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, чтобы вернуть ответ:

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

, если я просто использовать System.out.println (r), он выводит результат в консоли, поэтому форма отправляется. Поэтому я думаю, что проблема заключается в том, как я возвращаю ответ или как я обрабатываю его с помощью додзё.

Заранее благодарен!

ответ

1

Здесь просто AJAX и JSP (без jquery), чтобы щелкнуть по кнопке и получить время обратно в поле ввода. посмотрите на строку «document.myForm.time.value = xmlhttp.responseText;», где он получает ответ и задает результат в jsp.

<html> 
<head> 
<title>JSP and Servlet using AJAX</title> 
<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"); 
    } 
    } 
} 
</script> 
</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> 

здесь сервлет для него:

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