javascript
  • php
  • jquery
  • ajax
  • 2017-10-06 4 views 1 likes 
    1

    id가 "render"인 다운로드 버튼이있는 php 파일 index.php가 있습니다. 메신저 아약스를 사용하여 서버에 요청을 보냅니다. 사용한 JS 코드 임이다원하지 않는 페이지 리디렉션

    $('#render').click(function(e){ 
     
        $('html,body').animate({ scrollTop: 0 }, 1000); 
     
        var url='render.php'; 
     
        $.showLoading(); 
     
        $.ajax({ 
     
          type: "POST", 
     
          url: url, 
     
          data: '', 
     
          success: function(data){ 
     
           $.hideLoading(); 
     
          } 
     
         }); 
     
        });

    render.php 파일은 사용자 데이터를 포함하는 PDF 문서를 생성한다. mpdf PHP 라이브러리를 사용하여 pdf im을 생성하려면. 그리고 render.php 파일의 코드는 다음과 같습니다

    <?php 
    session_start(); 
    if(!empty($_SESSION['template'])){ 
        $template=$_SESSION['template']; 
        ob_start(); 
        require_once("resumeTemplates/$template.php"); 
        $template = ob_get_clean(); 
    
        require_once 'mpdf/vendor/autoload.php'; 
    
        $mpdf = new mPDF(); 
        $mpdf->WriteHTML($template); 
        $mpdf->Output("resume.pdf","D"); //sends pdf file to browser 
    } 
    ?> 
    

    문제는 다운로드 버튼은 페이지가 render.php로 리디렉션됩니다 클릭하면,하지만 난 사용자의 index.php에 있고 싶어. 나는 또한 추가하려고 시도했다.

    header("location:index.php"); 
    

    그러나이 페이지는 index.php로 redirecited되지 않았다. 그것은 render.php에 머물러 있습니다.

    다운로드 버튼의 HTML 코드는 다음과 같습니다 당신은 버튼을 클릭하면 기본 이벤트를 방지 할 필요가

    <a href="render.php" id="render" class="btn btn-primary btn-round">Download</a>

    +0

    이 그것을 버튼을 제출되어 클릭 href="#" 필요하십니까? 그렇다면 'preventdefault();'를 사용해야합니다. –

    +0

    당신은 단추 인 html 코드를 보여줄 것입니까? –

    +0

    감사합니다. 문제가 해결되었습니다. 주요 문제는 버튼의 HTML 코드에있었습니다. href = "render.php"를 href = "#"로 바꿨습니다. 로컬 서버에서 모든 것이 잘 작동하기 때문에이 솔루션을 찾을 수 없습니다. – Mayank

    답변

    0

    당신은

    <a href="#" id="render" class="btn btn-primary btn-round">Download</a> 
    
    0
    $('#render').click(function(e){ 
        $('html,body').animate({ scrollTop: 0 }, 1000); 
        var url='render.php'; 
        $.showLoading(); 
        $.ajax({ 
          type: "POST", 
          url: url, 
          data: '', 
          success: function(data){ 
           $.hideLoading(); 
          } 
         }); 
        e.preventDefault(); 
        }); 
    
    0

    . 이처럼 JS 코드를 변경, 그것을 작동합니다 : 그것은 이전에 리디렉션 때문에

    $('#render').click(function(e){ 
    
        e.preventDefault() // this prevents page from redirect 
    
        $('html,body').animate({ scrollTop: 0 }, 1000); 
        var url='render.php'; 
        $.showLoading(); 
        $.ajax({ 
          type: "POST", 
          url: url, 
          data: '', 
          success: function(data){ 
           $.hideLoading(); 
          } 
         }); 
        }); 
    
    관련 문제