在页面之间传递 JavaScript 变量工作正常,但 DataTables 仍然出错
Passing JavaScript variable between pages works fine, but DataTables is still erroring
我这辈子都想不通。
设置:
page 1: add.php
page 2: upload.php
page 3: return.php
在第一页上,用户从 Excel:
上传了一个电子表格
<div id="return"></div>
~~~~~
$(document).ready(function (e) {
$("#uploadForm").on('submit',(function(e) {
e.preventDefault();
$.ajax({
url: "upload.php",
type: "POST",
data: new FormData(this),
contentType: false,
cache: false,
processData:false,
success: function(data){
jsonResponse = data;
$("#return").load("return.php")
}
});
}));
});
Excel sheet 被发送到 upload.php
并且 JSON 响应与来自单元格的数据一起返回。
echo json_encode($out);
这正是 console.log
中的样子
jsonResponse = [
{"dateReceived":"2015-01-01","designCustomer":"MULTITEST 1","designCustomerLocation":"SUNNYVALE, CA"},
{"dateReceived":"2016-04-05","designCustomer":"MULTITEST 2","designCustomerLocation":"SUNNYVALE, CA"},
{"dateReceived":"1982-04-18","designCustomer":"MULTITEST 3","designCustomerLocation":"SUNNYVALE, CA"}
]
成功后,return.php
被加载到第一页上存在的 #return
div 中,并尝试使用 [=66= 构建 dataTable
] 输出...:
var table = $('#ltc-table').DataTable( {
"data" : jsonResponse,
"columns" : [
{ data : 'designCustomer' },
{ data : 'designCustomerLocation' },
{ data : 'dateReceived' }
]
});
但是,我收到错误:Uncaught Error: DataTables warning: table id=ltc-table - Requested unknown parameter 'designCustomer' for row 0.
不明白的地方:
jsonResponse
是一个包含 JSON 的变量,当我使用 console.log(jsonResponse);
on return.php
时,我得到我在上面粘贴的确切字符串(所以我假设 jsonResponse
是我可以在此页面上使用的变量,如果 console.log
正在报告它),但是,数据表说它找不到变量,因为它正在向我发出这个错误。
如果在 return.php
上,我创建了新的代码来代替定义 jsonResponse
:
jsonResponse = [
{"dateReceived":"2015-01-01","designCustomer":"MULTITEST 1","designCustomerLocation":"SUNNYVALE, CA"},
{"dateReceived":"2016-04-05","designCustomer":"MULTITEST 2","designCustomerLocation":"SUNNYVALE, CA"},
{"dateReceived":"1982-04-18","designCustomer":"MULTITEST 3","designCustomerLocation":"SUNNYVALE, CA"}
];
有效。
我做错了什么?这是我将数据从一个页面传递到另一个页面并加载到第一页上的 div 中的问题吗?这让我发疯.....
您的 ajax 回复将返回文本,不是吗?我没有在 ajax.
中看到任何指定的 "json" 类型
数据属性是否支持JSON。还是需要 javascript 个对象?
查看"ajax sourced"下的文档,暗示使用datatable函数的"ajax" 属性:
例如
Ajax Sourced Datatable
我这辈子都想不通。
设置:
page 1: add.php
page 2: upload.php
page 3: return.php
在第一页上,用户从 Excel:
上传了一个电子表格<div id="return"></div>
~~~~~
$(document).ready(function (e) {
$("#uploadForm").on('submit',(function(e) {
e.preventDefault();
$.ajax({
url: "upload.php",
type: "POST",
data: new FormData(this),
contentType: false,
cache: false,
processData:false,
success: function(data){
jsonResponse = data;
$("#return").load("return.php")
}
});
}));
});
Excel sheet 被发送到 upload.php
并且 JSON 响应与来自单元格的数据一起返回。
echo json_encode($out);
这正是 console.log
jsonResponse = [
{"dateReceived":"2015-01-01","designCustomer":"MULTITEST 1","designCustomerLocation":"SUNNYVALE, CA"},
{"dateReceived":"2016-04-05","designCustomer":"MULTITEST 2","designCustomerLocation":"SUNNYVALE, CA"},
{"dateReceived":"1982-04-18","designCustomer":"MULTITEST 3","designCustomerLocation":"SUNNYVALE, CA"}
]
成功后,return.php
被加载到第一页上存在的 #return
div 中,并尝试使用 [=66= 构建 dataTable
] 输出...:
var table = $('#ltc-table').DataTable( {
"data" : jsonResponse,
"columns" : [
{ data : 'designCustomer' },
{ data : 'designCustomerLocation' },
{ data : 'dateReceived' }
]
});
但是,我收到错误:Uncaught Error: DataTables warning: table id=ltc-table - Requested unknown parameter 'designCustomer' for row 0.
不明白的地方:
jsonResponse
是一个包含 JSON 的变量,当我使用 console.log(jsonResponse);
on return.php
时,我得到我在上面粘贴的确切字符串(所以我假设 jsonResponse
是我可以在此页面上使用的变量,如果 console.log
正在报告它),但是,数据表说它找不到变量,因为它正在向我发出这个错误。
如果在 return.php
上,我创建了新的代码来代替定义 jsonResponse
:
jsonResponse = [
{"dateReceived":"2015-01-01","designCustomer":"MULTITEST 1","designCustomerLocation":"SUNNYVALE, CA"},
{"dateReceived":"2016-04-05","designCustomer":"MULTITEST 2","designCustomerLocation":"SUNNYVALE, CA"},
{"dateReceived":"1982-04-18","designCustomer":"MULTITEST 3","designCustomerLocation":"SUNNYVALE, CA"}
];
有效。
我做错了什么?这是我将数据从一个页面传递到另一个页面并加载到第一页上的 div 中的问题吗?这让我发疯.....
您的 ajax 回复将返回文本,不是吗?我没有在 ajax.
中看到任何指定的 "json" 类型数据属性是否支持JSON。还是需要 javascript 个对象? 查看"ajax sourced"下的文档,暗示使用datatable函数的"ajax" 属性: 例如 Ajax Sourced Datatable