2014-01-15 36 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在会话变量,所以你不必通过来回客户端和服务器之间。