2014-01-15 35 views
0

我在我的應用程序中使用了很多模態。很多時候我需要將信息從一個「盒子」傳遞給另一個。例如:在AJAX生成的模態之間傳遞動態信息

例如:假設我有一個列出汽車製造商(奧迪,寶馬,本田等)的表。現在我想讓它每行都是可點擊的。點擊某一行時,會彈出一個模型列表(本田雅閣,思域,CR-V等)。

<tr onclick="someAjaxFunction('manufacturerId')"> 
    <td>Audi</td> 
</tr> 
<tr onclick="someAjaxFunction('manufacturerId')"> 
    <td>BMW</td> 
</tr> 

我們層上難度層:

會如下這一最佳解決。說在彈出的框中有一個按鈕,說「添加模型」。您點擊該按鈕,現在該框會刷新以顯示您輸入新車型的表單。您點擊保存,現在該框會刷新,以顯示新的項目列表。

現在讓我們說我們只希望允許具有某些權限的用戶添加新模型。現在,模式彈出窗口變得更加動態,因爲它必須確定用戶是否應該看到「添加新」按鈕。這是否意味着我們需要將用戶的ID從一個盒子傳遞到下一個盒子?

<tr onclick="someAjaxFunction('manufacturerId', 'userId')"> 
    <td>Audi</td> 
</tr> 
<tr onclick="someAjaxFunction('manufacturerId', 'userId')"> 
    <td>BMW</td> 
</tr> 

但是現在一個技術精明的人可以簡單地改變onclick事件中的userId並且能夠做他們不應該做的事情。

問題:你如何在不同的模態屏幕之間來回傳遞動態信息?你是否通過創建越來越多的JavaScript函數來完成與上述相同的事情,這些函數採用各種參數並將它們放入onclick事件中?

(無jQuery,請。)

+0

您需要在服務器上使用會話變量來跟蹤用戶ID,而不是從瀏覽器發送它。 – Barmar

+0

而不是在函數中傳遞大量參數,您可以嘗試使用一個對象,以便您可以通過屬性名稱而不是長位置參數列表引用選項。或者使用'data-XXX'屬性來保存每個對象的細節,並且傳遞'this'作爲唯一的參數。 – Barmar

回答

0

你需要跟蹤如果訪問者登錄或不與PHP會話變量和輸出取決於添加按鈕。

例如:

if($_session('is_user'){ 
    echo 'this is a add car model button'; 
} 
else{ 
    echo 'log in to add a car model'; 
} 

,你還可以保存用戶ID在會話變量,所以你不必通過來回客戶端和服務器之間。