![](/img/trans.png)
[英]Datatables server side ajax and sAjaxSource have different request parameter
[英]Datatables - Using Ajax datasource (sAjaxSource) with multiple tables and dynamic argument
我有兩個數據表,試圖通過對燒瓶API的GET請求填充數據。 我的數據源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源,以便對您的指導有所幫助。
謝謝!
相同的原始策略是完全基於客戶端的限制,並且主要是為了保護用戶而不是服務而設計的。 所有或大多數瀏覽器都包含一個命令行開關或配置選項以將其關閉。 SOP就像汽車上的安全帶:它們保護汽車上的騎手,但任何人都可以自由選擇不使用它們。 當然,不要指望一個人的安全帶阻止他們下車並攻擊您(或訪問您的Web服務)。
假設我編寫了一個訪問您的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的內容是秘密)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.