数据表 - 使用具有多个表和动态参数的Ajax数据源(sAjaxSource)

时间:2014-10-01 06:53:41

标签: javascript jquery ajax datatables

我有两个数据表,我试图通过GET请求填充数据到烧瓶API。我的数据源url是localhost:5000 / data但是我无法获取数据表来显示数据。当我创建一个静态.txt文件时,我可以获得数据。我查看了我的GET请求,看起来它正在附加来自jQuery的某种事件id(我对此很新...)。我最终希望能够将自定义参数传递给GET请求,以便根据用户点击第一个表中的哪一行来过滤第二个表。

我已经尝试过aaData和sAjaxSource,我无法让任何一个工作。

我的JSON对象是这种形式:

{
  "items": [
    {
      "column1": "Foo", 
      "column2": "Bar", 
      "column3": "1.54"
    }, 
    {
      "column1": "Blah", 
      "column2": "Tah", 
      "column3": "1.54"
    }
  ]
}

表1 - 我使用的是静态.txt文件,此表显示正常

$(document).ready(function() {
    $('#table1').dataTable( {
        "bProcessing": true,
        "sAjaxSource": "/thisWorks.txt",
        "sAjaxDataProp": "item",
        "aoColumns": [
        { 
            "mData": "column1" 
        },
        { 
            "mData": "column2" 
        },
        { 
            "mData": "column3" 
        }
        ]
    } );


    $('#example tbody').on('click', 'tr', function () {
        var clickId = $('td', this).eq(0).text();
    } );

表2 - 无法使这个工作

$('#table2').dataTable( {
    "bProcessing": true,
    "sAjaxSource": "http://localhost:5000/data?column1=1234",
    "sAjaxDataProp": "items",
    "aoColumns": [
    { "mData": "column1" },
    { "mData": "column2" },
    { "mData": "column3" }
    ]
} );

当我查看我的chrome控制台时,我看到我的第二个Ajax请求被解释为:

http://localhost:5000/data?column1=1234&_1412145757890

最后,我想将clickId的值从第一个表传递到第二个表中的Ajax源,因此任何指导都会受到赞赏。

谢谢!

1 个答案:

答案 0 :(得分:0)

https://softwareengineering.stackexchange.com/questions/216605/how-do-web-servers-enforce-the-same-origin-policy

  

相同的原始政策是完全基于客户的限制,主要用于保护用户,而不是服务。所有或大多数浏览器都包含命令行开关或配置选项以将其关闭。 SOP就像汽车中的安全带:它们保护车内的骑手,但任何人都可以自由选择不使用它们。当然不要指望一个人的安全带阻止他们下车并攻击你(或访问你的网络服务)。

     

假设我编写了一个访问Web服务的程序。它只是一个发送包含HTTP请求的TCP消息的程序。您要求使用服务器端机制来区分我的程序(可以发送任何内容)发出的请求和由允许来源加载页面的浏览器发出的请求。它根本无法完成;我的程序总是可以发送与网页形成的请求相同的请求。

     

发明了同源策略,因为它阻止来自一个网站的代码访问另一个网站上的凭据限制内容。默认情况下,Ajax请求与目标站点授予的任何auth cookie一起发送。例如,假设我意外加载http://evil.com/,它会发送http://mail.google.com/请求。如果SOP没有到位,我登录了Gmail,则evil.com上的脚本可以看到我的收件箱。如果evil.com上的网站想要在没有我的cookie的情况下加载mail.google.com,它可以只使用代理服务器; mail.google.com的公开内容不是秘密(但使用我的cookie访问时,mail.google.com的内容是秘密)。