- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
(根据我同时获得的帮助更新消息)
我正在尝试通过 Ajax(th 和 td)动态填充我的 jQuery dataTable。
为此,我虔诚地遵循我在这里找到的 jsfiddle 脚本,该脚本似乎有效。
不同之处在于,编写此脚本的人只是在使用它之前硬编码了他的“dataSet”变量,而我需要从 php 自动生成它,然后在 jQuery 中解析它。
当我尝试这样做时,我得到的只是:
TypeError: e is not an Object. (evaluating '"length"in e').
Islam 在此期间通过聊天给了我很大帮助,看来格式和 console.log(dataSet) 现在都可以了。
这是我的(更新的)尝试:
HTML:
<table id="example"></table>
PHP:
<?php
$dataset=array();
....
while($row = mysqli_fetch_assoc($sql)) {
.....
$array_tmp = array();
$array_tmp["Header1"] = $alias;
$array_tmp["Header2"] = $chambres;
$array_tmp["Header3"] = $adresse;
$dataset[] = $array_tmp;
}
....
echo json_encode($dataset, JSON_UNESCAPED_UNICODE);
?>
jQuery:
var my_columns = [];
var dataSet =[];
$.ajax({
type: "GET",
url: "myfile.php",
data: 'value=1',
datatype:'json',
cache: false,
success: function(response){
dataSet=response;
$.each( dataSet[0], function( key, value ) {
var my_item = {};
my_item.data = key;
my_item.title = key;
my_columns.push(my_item);
});
}
});
islam jsFiddled 带有我的一些生产数据的代码,它可以工作,但我仍然收到错误消息。所以,这确实是一个谜。
我在这里向您展示的正是我所拥有的。因此,没有什么其他不同可以改变游戏规则。
我使用与伊斯兰教 jsFiddled 相同的 jQuery 和 dataTables。当我成功使用数据表时,除了检索服务器数据的特定尝试之外,两者都已设置并正常工作。我没有使用其他库。
当我“console.log(dataSet)”在我这边时,这是我得到的(看起来不错):
[
{
"Header1" : "tyurtyu",
"Header2" : "zertzert",
"Header3" : 123
},
{
"Header1" : "sdfsdfsd" ,
"Header2" : "dsfgsdfg",
"Header3" : 456
}
]
仅供引用,这是对 dataTables 的带注释的调用,我尚未使用它,因为我已经收到 Ajax 调用的错误消息。至少,它会显示我的 dataSet 数组之后应该在哪里使用。
/*
var dataTable = $('#example').DataTable({
'bInfo' : false,
'paging' : false,
'scrollX': false,
'processing':false,
'sDom' : 'ltipr',
'data' : dataSet,
"columns": my_columns
});
*/
如果我取消对数据表的调用的注释,我会在另一条错误消息之上收到另一条错误消息:
TypeError: e is not an Object. (evaluating '"length"in e')
TypeError: undefined is not an object (evaluating 'e[i].aDataSort')
如有任何帮助,我们将不胜感激。
更新:我通过更改从“响应”传递到“数据集”的方式摆脱了第一条错误消息,如下所示:
success: function(response){
dataSet = JSON.parse(response);
//instead of "dataSet=response;"
$.each(dataSet[0], function(key, value) {
...
});
}
所以现在,当我尝试将 dataSet 传递到 dataTable 时,我只收到第二条错误消息。
这似乎只是一个范围问题,因为 ajax 调用之外的 console.log(dataSet) 不会输出任何内容
var my_columns = [];
var dataSet =[];
$.ajax({
type: "GET",
url: "php/ajax/get_table_values.php",
data: 'value1=1',
datatype:'json',
cache: false,
success: function(response){
dataSet = JSON.parse(response);
//instead of "dataSet=response;"
$.each(dataSet[0], function(key, value) {
var my_item = {};
my_item.data = key;
my_item.title = key;
my_columns.push(my_item);
});
}
});
console.log(dataSet);
var dataTable = $('#example').DataTable({
'bInfo' : false,
'paging' : false,
'scrollX': false,
'processing':false,
'sDom' : 'ltipr',
'data' : dataSet,
"columns": my_columns
});
更新:问题已解决,请参阅下面我的其他帖子。谢谢大家!
最佳答案
在你的 php 文件上做这样的事情:
if ($_POST["action"] == "SLC" && isset($_POST["categoryId"])) {
$category= $_POST["categoryId"];
//do your query here btw use PDO is better
//fill your data here and then return it
$result = $command->fetchAll(PDO::FETCH_ASSOC)
$return["data"] = $result;
echo json_encode($return,JSON_UNESCAPED_UNICODE);
}
然后在你的 JavaScript 中这样调用它:
var tableTypeOfClientInfo = $('#tableTypeOfClientInfo ').DataTable({
"destroy": true,
"responsive":{
"details": {
renderer: function ( api, rowIdx, columns ) {
var data = $.map( columns, function ( col, i ) {
return col.hidden ?
'<tr data-dt-row="'+col.rowIndex+'" data-dt-column="'+col.columnIndex+'">'+
'<td>'+col.title+':'+'</td> '+
'<td>'+col.data+'</td>'+
'</tr>' :
'';
} ).join('');
return data ?$('<table/>').append( data ) :false;
}
}
},
"autoWidth": false,
"ajax": {
"url": 'some.php',
"method": 'POST',
data:{action:"SLC", categoryId:id}
},
"columns": [
{"data": "identification_number"},
{"data": "address"},
{"data": "birthday"},
{"data": "phone"},
{"data": "mail"}
],
"language":{"url": "//cdn.datatables.net/plug-ins/1.10.15/i18n/Spanish.json"},
"columnDefs": [
{
"className": "dt-center", "targets": "_all"
}
]
});
关于php - 数据表 AJAX - 传递数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54705851/
Github:https://github.com/jjvang/PassIntentDemo 我一直在关注有关按 Intent 传递对象的教程:https://www.javacodegeeks.c
我有一个 View ,其中包含自动生成的 text 类型的 input 框。当我单击“通过电子邮件发送结果”按钮时,代码会将您带到 CalculatedResults Controller 中的 Em
我有一个基本的docker镜像,我将以此为基础构建自己的镜像。我没有基础镜像的Dockerfile。 基本上,基本镜像使用两个--env arg,一个接受其许可证,一个选择在容器中激活哪个框架。我可以
假设我想计算 2^n 的总和,n 范围从 0 到 100。我可以编写以下内容: seq { 0 .. 100 } |> Seq.sumBy ((**) 2I) 但是,这与 (*) 或其他运算符/函数不
我有这个网址: http://www.example.com/get_url.php?ID=100&Link=http://www.test.com/page.php?l=1&m=7 当我打印 $_G
我想将 window.URL.createObjectURL(file) 创建的地址传递给 dancer.js 但我得到 GET blob:http%3A//localhost/b847c5cd-aa
我想知道如何将 typedef 传递给函数。例如: typedef int box[3][3]; box empty, *board[3][3]; 我如何将 board 传递给函数?我
我正在将一些代码从我的 Controller 移动到核心数据应用程序中的模型。 我编写了一个方法,该方法为我定期发出的特定获取请求返回 NSManagedObjectID。 + (NSManagedO
为什么我不能将类型化数组传递到采用 any[] 的函数/构造函数中? typedArray = new MyType[ ... ]; items = new ko.observableArray(ty
我是一名新的 Web 开发人员,正在学习 html5 和 javascript。 我有一个带有“选项卡”的网页,可以使网页的某些部分消失并重新出现。 链接如下: HOME 和 JavaScript 函
我试图将对函数的引用作为参数传递 很难解释 我会写一些伪代码示例 (calling function) function(hello()); function(pass) { if this =
我在尝试调用我正在创建的 C# 项目中的函数时遇到以下错误: System.Runtime.InteropServices.COMException: Operation is not allowed
使用 ksh。尝试重用当前脚本而不修改它,基本上可以归结为如下内容: `expr 5 $1 $2` 如何将乘法命令 (*) 作为参数 $1 传递? 我首先尝试使用“*”,甚至是\*,但没有用。我尝试
我一直在研究“Play for Java”这本书,这本书非常棒。我对 Java 还是很陌生,但我一直在关注这些示例,我有点卡在第 3 章上了。可以在此处找到代码:Play for Java on Gi
我知道 Javascript 中的对象是通过引用复制/传递的。但是函数呢? 当我跳到一些令人困惑的地方时,我正在尝试这段代码。这是代码片段: x = function() { console.log(
我希望能够像这样传递参数: fn(a>=b) or fn(a!=b) 我在 DjangoORM 和 SQLAlchemy 中看到了这种行为,但我不知道如何实现它。 最佳答案 ORM 使用 specia
在我的 Angular 项目中,我最近将 rxjs 升级到版本 6。现在,来自 npm 的模块(在 node_modules 文件夹内)由于一些破坏性更改而失败(旧的进口不再有效)。我为我的代码调整了
这个问题在这里已经有了答案: The issue of * in Command line argument (6 个答案) 关闭 3 年前。 我正在编写一个关于反向波兰表示法的 C 程序,它通过命
$(document).ready(function() { function GetDeals() { alert($(this).attr("id")); } $('.filter
下面是一个例子: 复制代码 代码如下: use strict; #这里是两个数组 my @i =('1','2','3'); my @j =('a','b','c'); &n
我是一名优秀的程序员,十分优秀!