【问题标题】:Passing dynamic information between AJAX generated modals在 AJAX 生成的模式之间传递动态信息
【发布时间】:2014-01-15 17:28:02
【问题描述】:

我在我的应用程序中使用了很多模式。很多时候我需要将信息从一个“盒子”传递到另一个。

示例:假设我有一张列出汽车制造商(奥迪、宝马、本田等)的表格。现在我想让它每一行都是可点击的。单击一行时,会弹出一个模式,其中包含它们生产的模型(本田雅阁、思域、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。)

【问题讨论】:

  • 您需要使用服务器上的会话变量来跟踪用户 ID,而不是从浏览器发送。
  • 您可以尝试使用一个对象,而不是在函数中传递大量参数,因此您可以通过属性名称而不是长长的位置参数列表来引用选项。或者使用data-XXX 属性来保存每个对象的详细信息,并将this 作为唯一参数传递。

标签: javascript php html ajax


【解决方案1】:

您需要跟踪访问者是否使用 php 会话变量登录并根据该变量输出添加按钮。

例如:

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

您还可以将用户 ID 保存在会话变量中,这样您就不必在客户端和服务器之间来回传递它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 2018-01-25
    • 1970-01-01
    相关资源
    最近更新 更多