2015-06-05 7 views
-1

У меня есть страница с динамическим контентом и кнопка для сохранения в формате PDF. Я отправляю через ajax содержимое в файл php.

Проблема в том, что мое приложение никогда не обновляется.

Если я изменил содержимое на странице, а затем нажмите кнопку сохранения pdf, содержимое $ _POST никогда не изменится до обновления страницы.

Кто-то знает, как я могу это сделать, чтобы избежать этого?

Ajax запрос в событие JQuery при нажатии кнопки.

$(document).on("click", "#saveAll", function(event) { 
    event.preventDefault(); 
    var nombre = 'savedImageData'+Math.random(); 
    var overviewLoad = ''; 
    var programsLoad = ''; 
    var barriersLoad = ''; 
    var rolesLoad = ''; 
    var relationsLoad = ''; 
    var printcont = ''; 
    $('#printall').html(''); 
    overviewLoad = $("#orgoverview").html(); 
    programsLoad = $("#orgprograms").html(); 
    barriersLoad = $("#orgbarriers").html(); 
    rolesLoad = $("#orgroles").html(); 


    var src1 = $("#canvasImg").attr("src"); 
    relationsLoad = $("#orgrelations").html(); 
    var rolestoles = $('#orgroles').html(); 
    $('#printall').append(overviewLoad); 
    $('#printall').append('<div class="page">'); 
    $('#printall').append(programsLoad+'</div>'); 
    $('#printall').append('<div class="page">'); 
    $('#printall').append(barriersLoad+'</div>'); 
    $('#printall').append('<div class="page">'); 
    $('#printall').append(relationsLoad+'</div>'); 
    $('#printall').append('<div class="page">'); 
    $('#printall').append(rolestoles+'</div>'); 
    printcont = $('#printall').html(); 



    $('<input>').attr('value', ''); 
    $('<input>').attr({ 
    type: 'hidden', 
    name: 'contenido', 
    id: 'contenido', 
    value: printcont 
}).prependTo('form#getPDF'); 
    $.ajax({ 
      method: "POST", 
      url: "run/runpdf.php?"+Math.random(), 
      data: $("form#getPDF").serialize(), 
      cache: false, 
      headers: { "cache-control": "no-cache" }, 
      success: function(someMessageFromPhp) { 
       mystring = someMessageFromPhp.replace('../',''); 
       window.open(mystring+'?'+Math.random()); 
       $('#downloadPDF').hide(); 
      } 
     }); 



    }); 

Php

<?php 
header("Expires: Tue, 03 Jul 2001 06:00:00 GMT"); 
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 
header("Cache-Control: no-store, no-cache, must-revalidate"); 
header("Cache-Control: post-check=0, pre-check=0", false); 
header("Pragma: no-cache"); 
define('DOMPDF_ENABLE_AUTOLOAD', true); 

// include DOMPDF's default configuration 
require_once 'dompdf/dompdf_config.inc.php'; 
$contenido .= utf8_encode($_POST['contenido']); 
    $dompdf = new DOMPDF(); 
    $dompdf->set_paper('LETTER', 'portrait'); 
$dompdf->load_html($contenido); 
$dompdf->render(); 
header('Content-type: application/pdf'); 
$output = $dompdf->output(); 
    file_put_contents('Brochure.pdf', $output); 
?> 
+0

Как вы отправляете сообщения через ajax или php? –

+0

Привет @ KarthikKeyan Спасибо за ваш ответ. '$ .ajax ({ типа: "POST", URL: "Работа/runpdf.php" + Math.random(), данные:. $ ("Форма № GetPDF") сериализации(), cache: false, заголовки: {"cache-control": "no-cache"}, success: function (someMessageFromPhp) { mystring = someMessageFromPhp.replace ('../', ''); window.open (mystring + '?' + Math.random()); $ ('# downloadPDF'). hide(); } }); ' –

+0

Я думаю, что функция ajax неправильно вызвана –

ответ

0

Решено: Вместо отправки через входное содержимое формы POST я передал в качестве данных в ajax переменную с загруженным html для передачи.

printcont = $('#printall').html(); 

     $.ajax({ 
      method: 'POST', 
      url: 'run/runpdf.php?'+Math.random(), 
      data: {'contenido': printcont}, 
      cache: false, 
      success: function(someMessageFromPhp) { 
       mystring = 'run/'+someMessageFromPhp; 
       window.open(mystring+'?'+Math.random()); 
       $('#downloadPDF').hide(); 
      } 
     }); 

Спасибо за ваше время, за вашу помощь!

0
$.ajax({ 
    url: 'yourUrl', 
    success: function(data){ 
    yourHTMLInputsOrWhatEver = data; 
} 
}); 

метод успеха вызывается, когда результат формирует ваш Аякс вызов был отправлен клиенту. это должно работать в одиночку. Если вы хотите принудительно обновить, используйте document.location.reload(); внутри обратного вызова успеха.

+0

Комментарии не предназначены для расширенного обсуждения; этот разговор был [перемещен в чат] (http://chat.stackoverflow.com/rooms/79893/discussion-on-answer-by-messerbill-change-post-content-without-refresh-page). – Taryn

Смежные вопросы