1

我正在尝试将 DataTables 与我工作的虚拟学习环境一起使用。

介绍

正如我在之前的问题中提到的,我们的 VLE 使用Netvibes 通用小部件 API,它允许我编写 JavaScript 文件,这些文件既可以与 VLE 通信(用于从 VLE 的用户帐户中检索信息,例如姓名和时间表),也可以通过代理,一个托管 PHP 文件和数据库的内部网络网络服务器。

Netvibes UWA AJAX 调用

因此,例如,我可以使用此代码来访问我的 PHP 脚本:

UWA.Data.getJson(List.URL + '?cmd=getObservations&filters=' + JSONdata, List.init);

两个简单的参数——urlcallback

或者,我可以使用完整的Data.request调用:

UWA.Data.request(
    BookReviewInput.URL, 
    {
        method: 'post', 
        proxy: 'ajax', 
        type: 'json', 
        cache: 3600,
        parameters: obj,
        onComplete: BookReviewInput.process
    }

这些脚本是在我们的 VLE 上编写的,它有一个内部网络 URL,http://vle.curriculum.local然后是一个外部 URL http://vle.ourschoolwebsite.com

它们与只能从本地访问的脚本进行通信,URL 为http://php.curriculum.local.

数据表 AJAX 调用

我现在正试图让 DataTables 从我的内部定位脚本中加载信息,我希望它能够完全完成这一切(即分页和所有事情),因为我们有很多数据需要很长时间才能加载满的。

首先,我通过手动从他们的网站上复制一些示例表来确保 DataTables 以 UWA 格式工作。具有最少.dataTable()功能的手动 HTML 表格可以正常工作。

然后我尝试编写以下代码,但不起作用:

<head>
    <script type="text/javascript">
    //<![CDATA[

    widget.onLoad = function(){
        $('#example').dataTable( {
            "bProcessing": true,
            "bServerSide": true,
            "sAjaxSource": "http://php.curriculum.local/cmd.php"
        } );
    }

    //]]>
    </script>
</head>
<body>
    <div id="wrapper">
        <table cellpadding="0" cellspacing="0" border="0" class="display" id="example"> </table>
    </div>
</body>

我从运行这个脚本中得到的控制台错误信息非常少,可能是因为 UWA 包装器:

控制台错误 1 当我点击 186642.js..

控制台错误 2

服务器端输出

我知道问题不在于服务器端输出,因为我已经在http://pro.jsonlint.com上相应地验证了它:

{
    "sEcho": 0,
    "iTotalRecords": "5",
    "iTotalDisplayRecords": "5",
    "aaData": [
        [
            "2012-10-24",
            "35010",
            "34966",
            "10",
            "43",
            "2",
            "2",
            "2"
        ],
        [
            "2012-11-14",
            "34956",
            "35010",
            "10",
            "38",
            "2",
            "2",
            "2"
        ],
        [
            "2012-11-09",
            "90335",
            "34972",
            "11",
            "28",
            "2",
            "1",
            "1"
        ],
        [
            "2012-10-18",
            "34961",
            "34972",
            "11",
            "28",
            "2",
            "1",
            "2"
        ],
        [
            "2012-10-19",
            "34996",
            "34972",
            "11",
            "28",
            "2",
            "2",
            "2"
        ]
    ]
}

可能的原因

我相对不知情的猜测是 DataTables 无法访问我的脚本,因为它是跨域的。

问题是,我无法将这些脚本放在同一个域中——我无法访问我们 VLE 上的 PHP 或 MySQL,该组织中的任何人也没有。

潜在的解决方案

认为答案是尝试使用DataTables 函数中UWA.Data调用。

这是我用来访问我的脚本的 UWA 调用:UWA.Data.getJson('http://php.curriculum.local/cmd.php' + '?cmd=getObservations', fnCallback);虽然我认为我还需要某种方式来发送 dataTables 的分页变量等,所以我可能需要使用完整的UWA.Data.request调用,并发送一个params对象。

可悲...

我完全不知道这是否可能,更不用说如何做到了。

任何人都可以提供指导吗?

提前致谢,

4

0 回答 0