Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Jquery的Submit和$post时,程序的行为不同_Javascript_Java_Jquery_Jsp_Servlets - Fatal编程技术网

Javascript 使用Jquery的Submit和$post时,程序的行为不同

Javascript 使用Jquery的Submit和$post时,程序的行为不同,javascript,java,jquery,jsp,servlets,Javascript,Java,Jquery,Jsp,Servlets,我正在经历一个混乱的情况,当点击按钮时,pdf应该被下载。我的设计和要求如下: 点击按钮 显示带有两个按钮的确认框保存和打开 如果选择“保存”,则pdf应保存在本地计算机上 第三点是我面临的问题,因为没有确认框。在这里,当使用提交按钮提交表单时(无确认框),将下载文件。代码如下: <button type="submit" id="Export">xxx_tutorial</button> Servlet: package com.testcase.testing;

我正在经历一个混乱的情况,当点击按钮时,pdf应该被下载。我的设计和要求如下:

  • 点击按钮
  • 显示带有两个按钮的确认框
    保存
    打开
  • 如果选择“保存”,则pdf应保存在本地计算机上
  • 第三点是我面临的问题,因为没有确认框。在这里,当使用
    提交按钮提交表单时(无确认框),将下载文件。代码如下:

    <button type="submit" id="Export">xxx_tutorial</button>
    
    Servlet:

    package com.testcase.testing;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.io.PrintWriter;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * Servlet implementation class button
     */
    @WebServlet("/button")
    public class button extends HttpServlet {
        private static final long serialVersionUID = 1L;
    
        /**
         * @see HttpServlet#HttpServlet()
         */
        public button() {
            super();
            // TODO Auto-generated constructor stub
        }
    
        /**
         * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
            doPost(request, response);
            }
    
        /**
         * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
    
            response.getWriter().append(request.getParameter("param"));
            performTask(request,response);
        }
    
        private void performTask(HttpServletRequest request, HttpServletResponse response) throws ServletException,
        IOException {
    
            String pdfFileName="";
    
            if(request.getParameter("param")==null){
    
        }
        else if(request.getParameter("param").matches("sap_webi_tutorial")){
            System.out.println("in create pdf file name part");
            pdfFileName = "/"+request.getParameter("param")+".pdf";
        }
            else{
    
            }
    
    String contextPath = getServletContext().getRealPath(File.separator);
    File pdfFile = new File(contextPath + "/xxx_tutorial.pdf"); 
    response.setContentType("application/pdf");
    response.addHeader("Content-Disposition", "attachment; filename=" + "/xxx_tutorial.pdf");
    response.setContentLength((int) pdfFile.length());
    
    FileInputStream fileInputStream = new FileInputStream(pdfFile);
    PrintWriter responseOutputStream = response.getWriter();
    int bytes;
        while ((bytes = fileInputStream.read()) != -1) {
        responseOutputStream.write(bytes);
    }
    fileInputStream.close();
    responseOutputStream.flush();
    responseOutputStream.close();
        }
    }
    

    如果您
    submit
    表单,浏览器中显示的页面将收到该操作的结果-这就像单击一个链接

    调用
    $.post()
    将在后台发送数据,并将结果数据返回到回调函数(在您发布的代码中为空)。所以你必须在这个函数中处理结果

    有关背景信息,请参阅

    也许您可以执行您的逻辑,然后不再调用
    $.post()
    ,而只需从JavaScript代码中重新提交表单

    选中此选项可直接提交表单:


    先生,谢谢您的回答。。。实际上,我的下载代码是在servlet中的,所以我刚刚将数据传递给servlet,但是我如何在jsp中捕获下载文件呢?有什么方法可以做到这一点,因为我尝试使用javascript,但我的要求是我需要有一个自定义的确认框,这只能通过Jquery实现
    package com.testcase.testing;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.io.PrintWriter;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * Servlet implementation class button
     */
    @WebServlet("/button")
    public class button extends HttpServlet {
        private static final long serialVersionUID = 1L;
    
        /**
         * @see HttpServlet#HttpServlet()
         */
        public button() {
            super();
            // TODO Auto-generated constructor stub
        }
    
        /**
         * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
            doPost(request, response);
            }
    
        /**
         * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
    
            response.getWriter().append(request.getParameter("param"));
            performTask(request,response);
        }
    
        private void performTask(HttpServletRequest request, HttpServletResponse response) throws ServletException,
        IOException {
    
            String pdfFileName="";
    
            if(request.getParameter("param")==null){
    
        }
        else if(request.getParameter("param").matches("sap_webi_tutorial")){
            System.out.println("in create pdf file name part");
            pdfFileName = "/"+request.getParameter("param")+".pdf";
        }
            else{
    
            }
    
    String contextPath = getServletContext().getRealPath(File.separator);
    File pdfFile = new File(contextPath + "/xxx_tutorial.pdf"); 
    response.setContentType("application/pdf");
    response.addHeader("Content-Disposition", "attachment; filename=" + "/xxx_tutorial.pdf");
    response.setContentLength((int) pdfFile.length());
    
    FileInputStream fileInputStream = new FileInputStream(pdfFile);
    PrintWriter responseOutputStream = response.getWriter();
    int bytes;
        while ((bytes = fileInputStream.read()) != -1) {
        responseOutputStream.write(bytes);
    }
    fileInputStream.close();
    responseOutputStream.flush();
    responseOutputStream.close();
        }
    }