【发布时间】:2014-02-09 12:19:39
【问题描述】:
我遇到了关于 datables 服务器端处理的服务器响应的问题。到目前为止,ajax 调用正在运行:
$('#result_tbl').dataTable( {
"bProcessing": true,
"bServerSide": true,
"sAjaxSource": "search_synagogue_ajax.php",
"aoColumns":[
{ "sTitle": "Column1", "mData": "string" },
{ "sTitle": "Column2", "mData": "stirng" }
],
"fnServerData": function ( sSource, aaData, fnCallback ) {
var countries = new Array();
aaData.push({"name": "country", "value": countries});
console.log(aaData);
$.ajax( {
"dataType": 'json',
"type": "POST",
"url": sSource,
"data": aaData,
"success": function(data) {
console.log(data);
},
error: function(xhr, status, error) {
var err = eval("(" + xhr.responseText + ")");
alert(err.Message);
}
});
);
我的响应创建如下所示:
$array = array(
"aaData" => array(
array(
'test1',
'test1',
),
array(
'test2',
'test2',
)
)
);
echo json_encode($array);
我得到:
{"aaData":[["test1","test1"],["test2","test2"]]}
但是,表格不会显示给定的测试数据。 Ajax 成功被称为...我注意到有些人声称数据表中不允许使用大括号
编辑:也许我理解错了。我想要做的是将一些参数发布到 ajax 文件,然后获取它的响应并将其插入到我的数据表中?我必须在 ajax 成功回调中手动执行此操作吗?
EDIT2:仍然无法正常工作?有什么建议吗?
EDIT3:尝试了一个更简单的例子,即使没有成功:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<!-- Always force latest IE rendering engine (even in intranet) & Chrome Frame
Remove this if you use the .htaccess -->
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>clientAjax</title>
<meta name="description" content="">
<meta name="author" content="">
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script type="text/javascript" src="lib/DataTables-1.9.4/media/js/jquery.dataTables.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('.hist_data').on('click', function(){
$('.myTable').dataTable( {
"bProcessing": false,
"bServerSide": true,
"bJQueryUI": true,
"sAjaxSource": "serverAjax.php",
"sAjaxDataProp": "data",
"fnServerData" : function(sSource, aoData, fnCallback) {
request = $.ajax({
"dataType" : "json",
"type" : "POST",
"url" : sSource,
"data" : aoData,
"success" : function(data) {
console.log(data);
},
"error": function(xhr, status, error) {
var err = eval("(" + xhr.responseText + ")");
alert(err.Message);
}
});
},
"aoColumns": [
{ "mData": "id" },
{ "mData": "name" },]
} );
});
});
</script>
</head>
<body>
<div>
<header>
<h1>clientAjax</h1>
</header>
<nav>
<p>
<a href="/">Home</a>
</p>
<p>
<a href="/contact">Contact</a>
</p>
</nav>
<div class="hist_data">Click here</div>
<table class="myTable">
</table>
<footer>
</footer>
</div>
</body>
</html>
和Ajax文件:
<?php
$array = array(
"aaData" => array(
array(
'id' => 1,
'name' => "ONE"
),
array(
'id' => 2,
'name' => "TWO"
)
)
);
echo json_encode($array);
?>
【问题讨论】:
-
firefox 在控制台中显示什么?这很可能是 JS 错误。
-
我使用 chrome 进行调试 - 控制台没有给我任何错误,并且控制台的成功输出看起来正确。我还使用 JSONLint 测试了有效的 json 格式。
标签: php jquery ajax json datatables