Generar un archivo de texto a travéz de un script php que será ejecutado al hacer click en un div dentro de un modal. Hasta que el archivo no se termine de generar, se bloquea el navegador del usuario. Cuando el proceso termina, un alert y se cierra el modal. Todo con el menor esfuerzo posible.
JQuery y el plugin NyroModal.
index.php Este archivo contiene el link que abre el modal y es al que se volverá cuando todo termine.
<link rel="stylesheet" href="/style/nyroModal.css" media="screen" type="text/css" />
<script type="text/javascript" src="/js/jquery-1.2.6.js"></script>
<script type="text/javascript" src="/js/jquery.nyroModal-1.3.0.js"></script>
El contenido de este archivo se visualizará en el modal. Ejecutará el script de php que creará un archivo y se cerrará cuando todo termine. Un poco de detalle:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>nyroModal :: Demo</title>
<link rel="stylesheet" href="/style/nyroModal.css" type="text/css" media="screen" />
<script type="text/javascript" src="/js/jquery-1.2.6.js"></script>
<script type="text/javascript" src="/js/jquery.nyroModal-1.3.0.js"></script>
</head>
<body>
You can whatever you want in the ajax request.<br />
You can create easyly :<br />
<div id="test">
Only this content will be shown if the hash is passed.<br />
Only this content will be shown if the hash is passed.<br />
Only this content will be shown if the hash is passed.<br />
Only this content will be shown if the hash is passed.<br />
Only this content will be shown if the hash is passed.<br />
Only this content will be shown if the hash is passed.<br />
Only this content will be shown if the hash is passed.<br />
Only this content will be shown if the hash is passed.<br />
Only this content will be shown if the hash is passed.<br />
</div>
<hr />
<div id="blabla">
Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla
Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla
Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla
Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla
Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla
Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla
</div>
<script type="text/javascript">
$(document).ready(function() {
$("#closeBtn").click(function(){
$.nyroModalRemove();
});
$("#myDiv2").click(function(){
alert("hiciste click");
$("#myDiv2").unbind("click");
$("#closeBtn").hide();
$(function() {
$.nyroModalSettings({
modal: true,
debug: true,
width: 900,
});
});
$(this).html("Espere");
$.ajax({
type: "POST",
url: "test.php",
data: "name=John Resig&location=Boston",
async: true,
success: function(msg){
//alert( "Data Saved: " + msg );
},
complete: function(objeto, exito){
alert("Me acabo de completar")
if(exito=="success"){
alert("Y con éxito");
$.nyroModalRemove();
}
},
contentType: "application/x-www-form-urlencoded",
});
});
});
</script>
<div align="center" id="myDiv2" style="color: #ffffff;text-align: center; width: 100%; background-color: #ff0000; height: 50px">Click para ejecutar test.php YA!</div>
<button id="closeBtn" >close button</button><br />
<a href="/demo.php" class="nyroModalClose">close link</a><br />
</body>
</html>
Simple script en php para crear un archivo de texto con el contenido de las variables pasadas por sent.php a través de $.ajax
<?php
$_POST['msg'] = "Algo";
$File = "YourFile.txt";
$Handle = fopen($File, 'w');
$Data = $_POST['name']."\n";
for ($n = 0; $n <= 20000; $n++) {
fwrite($Handle, $Data);
}
print "Data Written";
fclose($Handle);
?>