我创建了一个简单的表单,我使用Datatables jQuery插件在其中显示一些数据.数据由PHP脚本(process.PHP)填充,该脚本以
JSON格式返回正确的结果.在表单中,有一个按钮,将文本框的值发送到process.PHP.问题是当单击按钮时,我无法使用process.PHP脚本接收的新数据更新/更改数据表.
表格的代码:
<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>
要创建数据表,我使用以下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(); } }); }); } );
process.PHP脚本(工作正常)是:
<?PHP $result=""; if (empty($_REQUEST["txtId"])) { $result = '{"aaData":[["1","Surname1","Name1"]]}'; } else { $result = '{"aaData":[["2","Surname2","Name2"]]}'; } print $result; ?>
解决方法
看起来你应该在设置数据时指定fnServerData,如果你想使用ajax POST:
http://datatables.net/ref#fnServerData
您也可以不需要调用fnReloadAjax(),而只需要调用fnDraw(). fnReloadAjax()是一个插件函数,所以我假设你以前加载过它.