He creado un formulario simple y estoy usando el plugin jQuery de Datatables para mostrar algunos datos en él. Los datos se completan con una secuencia de comandos php (process.php) que devuelve los resultados adecuados en formato JSON. En el formulario, hay un botón que envía el valor del cuadro de texto a process.php. El problema es que no puedo actualizar/modificar datatable con los nuevos datos recibidos por el script process.php cuando se hace clic en el botón.Actualizar tablas de datos (JQuery) cuando se hace clic en el botón
El código del formulario:
<form name="myform" id="myform" action="" method="POST">
<label for="id">Enter an id:</label>
<input type="text" name="txtId" id="txtId" value=""/>
<input type="button" id="btnSubmit" name="btnSubmit" value="Search">
</form>
<div id="results">
<table class="display" id="example">
<thead>
<tr>
<th>id</th>
<th>Surname</th>
<th>Name</th>
</tr>
</thead>
<tbody>
<!-- data goes here -->
</tbody>
</table>
</div>
Para crear la tabla de datos, estoy usando el siguiente código de jQuery:
$(document).ready(function() {
var oTable = $('#example').dataTable({
"sPaginationType": "full_numbers",
"iDisplayLength": 10,
//"bServerSide": true,
"sAjaxSource": "process.php"
});
$("#btnSubmit").click(function(){
$.ajax({
type: "POST",
url: "process.php",
data: 'txtId=' + $("txtId").val(),
success: function(result) {
oTable.fnReloadAjax();
oTable.fnDraw();
}
});
});
});
guión process.php (funciona bien) es:
<?php
$result="";
if (empty($_REQUEST["txtId"])) {
$result = '{"aaData":[["1","Surname1","Name1"]]}';
}
else {
$result = '{"aaData":[["2","Surname2","Name2"]]}';
}
print $result;
?>
** never ** crea JSON utilizando funciones de cadena. PHP tiene 'json_encode()'.En su caso, usaría 'echo json_encode (array ('aaData' => array (array ('1', 'Apellido1', 'Nombre1'))));' – ThiefMaster
Sí, sé sobre json_encode() funtion . El script process.php anterior fue escrito por razones de simplicidad. Gracias de todos modos, ThiefMaster! – dimmat