【问题标题】:Passing clicked links to session array?将点击的链接传递给会话数组?
【发布时间】:2016-03-25 07:36:11
【问题描述】:

我在将点击的值传递给会话数组时遇到问题。 当我单击“活动”类下方的链接时,因此基于活动链接我想将数据传递给会话。这个想法就像网站:newfuturescareernavigator.org/assessment/step-1/,它在没有表单的情况下分为三页。

<a href="#" data-chng="this is-active" data-id="190">
<a href="#" data-chng="this is-active" data-id="436">
<a href="#" data-chng="this is-active" data-id="430">

这里是我点击链接后,被激活的类is-active。

<a href="#" data-chng="this is-active" data-id="190" class="is-active">
<a href="#" data-chng="this is-active" data-id="436" class="is-active">

提前致谢

【问题讨论】:

  • 您是要添加类(在 javascript 中)还是使用 ajax 并将其存储在 $_SESSION (php) 中?你有没有尝试过?
  • 是的,我正在尝试从选定的链接中获取数据 ID,但我无法使用 ajax。
  • 你为什么不能使用ajax,你把它作为你问题的标签?您可以将数组存储在$_SESSION 中。您将从$_GET$_POST 获得数组。您应该编辑您的问题并包含您尝试过的任何代码。如果您不需要在服务器端存储值,您可以使用带有 onclick 事件的 javascript。
  • 我的意思是,我不会用ajax,没有那么多经验。
  • 您是否尝试使用带有隐藏复选框的标签,然后在下一页获得结果? check this fiddle

标签: javascript php arrays ajax session


【解决方案1】:

我认为你最好只捕获客户端点击了哪些链接,然后当用户继续“下一步”时,你可以相应地处理点击的链接。

如果您完全决定通过保存会话中单击的链接(单击时)来执行此操作,则您必须对服务器使用 ajax 请求,因为会话变量是服务器端的。您是否在使用 JQuery 或其他可以帮助解决此问题的库?

这里有一个快速示例,用于保存哪些链接被点击(没有 jquery)。显然,您需要编写一些内容来防止相同的链接在字符串中重复,并且可能需要删除链接。

    <body>
<input type="hidden" id="ClickedLinks" name="ClickedLinks" value="" />
<a href="#" onclick="clickMe(this)" id="link1">click me</a>
<a href="#" onclick="clickMe(this)" id="link2">click me</a>

<script>
function clickMe(obj) {
    clickedLinks = document.getElementById("ClickedLinks");
    if(clickedLinks.value == "") {
        clickedLinks.value = obj.id;
    } else {
        clickedLinks.value = clickedLinks.value +","+obj.id;
    }
    alert(clickedLinks.value);
}
</script>
</body>

编辑: 只需将上面的 html 包装在一个表单中,然后将该表单提交给您的下一步。进入下一步页面后,只需将 ClickedLinks 的值放入 Session 中即可。

IE:

$_SESSION["ClickedLinks"] = $_POST["ClickedLinks"];

【讨论】:

  • 在网站 [newfuturescareernavigator.org/assessment/step-1/][1] 他们不使用输入。所以我正在尝试做上面的网站之类的事情。
  • 然后在全局范围内使用一个 JS 变量。我将其放入输入中,以便在下一步(提交表单时)检索它。
  • 我会尝试,这很有趣为什么不使用表单,也许他们正在使用 ajax 将数据传递给会话!
  • 我(简要地)查看了您链接的网站。当单击链接时,他们正在向另一个页面发出请求,即将请求标头中的“单击的链接”作为称为“id”的管道分隔变量传递。下载fiddler就可以看到了。它与我的答案中的概念基本相同,但又一次(不必要的)访问服务器。最好只使用表单并以这种方式传递数据。
  • 那么你能给我举个例子如何实现它,一个简单的解决方案吗?
【解决方案2】:

如果您要发布到另一个页面,您可以使用form,然后使用$_POST 获取结果...

See this example

HTML

 <label>
      <input type="checkbox" name='item1'>
      <span>Item 1</span>
    </label>
    <label>
      <input type="checkbox" name='item2'>
      <span>Item 1</span>
    </label>
    <label>
      <input type="checkbox" name='item3'>
      <span>Item 3</span>
    </label>

CSS

span {
  display: inline-block;
  background: #000;
  padding: 10px 20px;
  margin: 10px;
  color: #fff;
}

label input {
  /* display: none; */
}

input:checked ~ span {
  background: orange;
  color: #000;
}

【讨论】:

  • 我认为这是个好主意,只是我想保持设计原样。但最后最好还是走这条路。所以我有三个页面,需要收集数据用于选择查询。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多