javascript - 在页面之间传递 JavaScript 变量工作正常,但 DataTables 仍然出错

标签 javascript jquery json datatables

我一生都无法弄清楚这一点。

设置:

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 工作表将发送至 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 中,并尝试构建 dataTable与 JSON 输出...:

var table = $('#ltc-table').DataTable( {    
    "data" : jsonResponse,        
    "columns" : [
      { data : 'designCustomer' },
      { data : 'designCustomerLocation' },
      { data : 'dateReceived' }
  ]
});

但是,我收到错误:未捕获错误:DataTables 警告:表 id=ltc-table - 请求第 0 行的未知参数“designCustomer”。

我不明白的地方:

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”下的文档,它意味着使用数据表函数的“ajax”属性: 例如 Ajax Sourced Datatable

关于javascript - 在页面之间传递 JavaScript 变量工作正常,但 DataTables 仍然出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30516743/

相关文章:

javascript - 遍历 json 对象并返回汇总结果

jquery - 删除媒体查询导航栏中的所有空格

javascript - 在已知两点的线上获取点的函数

android - JSONParser 获取带有大括号的完整 JSON 文件

iphone - NSJSONSerialization Json 嵌套子

javascript - React 如何以 `this` 不引用类本身的方式调用 ES6 类的渲染函数?

javascript - 使用 AngularJs 中的属性指令动态地将行添加到表中

javascript - 在 json 构造中更改索引

jquery - 使用 jquery 使图像在 div 中可见

javascript - 将 json 数据转换为 javascript 数组