2014-11-07 4 views
0

Привет Я работаю над динамическим веб-проектом.Объект контекста не обновляется после завершения ajax

пока файл выбран на странице jsp. вызывается ajax. и перейти к сервлету. и установить атрибут контекста.

Я добавляю образец кода. Если у кого-то есть идея, связанная с тем, как обновлять контекстный объект ... с использованием ajax ...

но объект контекста не обновляется.

JSP страница

<html> 
     <script> 
     $(document).ready(function(){ 
      $(':file').change(function(){ 
       var fileObj = this.files[0]; 
       var fd = new FormData();  
       fd.append('file', fileObj); 
       var form = $('#f1'); 
       alert(<%=context.getAttribute("uploadFile")%>); //false 
       $.ajax({ 
         url:form.attr('action'), 
         type:form.attr('method'), 
         data:fd, 
         processData: false, 
         contentType: false, 
         async:false, 

        }).done(function(data){ 
         alert('ajax complete'); 
         //context object is not updated after ajax called... 
         alert(<%=context.getAttribute("uploadFile")%>); //false 
         <%context = getServletContext();%> 
         alert(<%=context.getAttribute("uploadFile")%>); //false 

        }); 
      }); 
     }); 
    </script> 
    <form name="f1" id="f1" action="/test" method="post"> 
     <input type="file"/> 
    </form> 
</html> 

Servlet Код

if(ServletFileUpload.isMultipartContent(request)){ 
       try{ 
        List<FileItem> multiparts = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request); 
        for(FileItem item : multiparts){ 
         if(!item.isFormField()){ 
          //File upload logic 
         } 
        } 
       }catch(Exception ex){ 
        ex.printStackTrace(); 
       } 
       context.setAttribute("uploadFile",true); //set context attribute 

ответ

0

SerlvetContext это на стороне сервера Object. Ваш JavaScript выполняется на клиенте и не имеет доступа к этому. Вы должны иметь ваш сервлет послать какой-то ответ (простой строки, JSON или XML), который будет доступен в объекте данных передается в вашу функцию JQuery:

.done(function(data){ 
alert(data); 

}); 

Добавьте код в ваш сервлет, чтобы отправить Ответ:

public void doPost(HttpServletRequest request, 
        HttpServletResponse response) 
      throws ServletException, IOException 
    { 
     // Set response content type 
     response.setContentType("text/html"); 

     PrintWriter out = response.getWriter(); 
     out.println("File Uploaded"); 
    } 
Смежные вопросы