如何在ajax调用后获取新的请求对象

时间:2014-10-11 07:56:24

标签: java jquery ajax jsp servlets

我正在使用JSP和SERVLET开发WEB PROJECT。

我正在尝试使用AJAX上传文件。 文件已成功上传。 但是,当ajax调用controller(servlet文件)时,请求和响应对象发送到jsp文件。

  

JSP文件

$(document).ready(function(){
    $(':file').change(function(){
            var fileObj = this.files[0];
                var form = $('#mOBJ');
                var fd = new FormData();    
                fd.append( 'file', fileObj);
                $.ajax({
                    url:form.attr('action'),
                    type:form.attr('method'),
                    data:fd,
                    processData: false,
                    contentType: false,
                    async:false,

                }).done(function(){
                    alert('ajax complete');

/////////////////////////////////////////////// ///////////////// 在这里,我得到了旧的要求价值。 在调用ajax之后我想要新的请求和响应对象。

                        var Check2Bool  = <%=context.getAttribute("comeFromUploadTemp")%>;
                        var check2 =  <%=request.getAttribute("comeFromUploadTemp")%>; 
                        alert(Check2Bool + " " + check2);

                }).fail(function() {
                    alert( "error" );
                    $('#ldiv').hide();
                });

});
  

的Servlet

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        ServletContext context = getServletContext();

        /**
         * Display XML file to the user
         */
        TemplateVO template = null;
        TemplateUtil util = new TemplateUtil();

        //Prepare XML file path
        String path=(String) context.getAttribute(Constants.USER_DIR);
        String strFilePath = null;

        //Upload XML file
        if(ServletFileUpload.isMultipartContent(request)){
            try{
                List<FileItem> multiparts = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
                for(FileItem item : multiparts){
                    if(!item.isFormField()){
                        String name = new File(item.getName()).getName();
                        request.setAttribute("FileName",name);
                        String path1 = path +  File.separator + "data-in";
                        strFilePath = FileUtil.createFileOnFileSystem(item,path1,name,"xml");
                    }
                }
            }catch(Exception ex){
                ex.printStackTrace();
            }

        }

        //set variables into Request Object
        template = util.readXML(strFilePath);

        context.setAttribute("comeFromUploadTemp", true);
        request.setAttribute("comeFromUploadTemp", true);

        request.getRequestDispatcher("mappingObject.jsp").forward(request, response);
    }

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

1 个答案:

答案 0 :(得分:0)

请求是JSP工作空间,notajax。 你应该通过响应i.o传递数据。请求。 像:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //... your code here
     response.getOutputStream().write(data);

}

然后你可以解析响应并获得你想要的数据。

http://www.coderanch.com/t/522069/Servlets/java/Adding-Custom-Data-Response-Headers http://www.w3schools.com/ajax/ajax_xmlhttprequest_response.asp