Jquery ajax 设置一些会话变量,然后触发点击



我有一个页面上有标签。 每个选项卡上都有一些表单。 在窗体上,用户可以设置筛选器。 例如"显示我 (10,25,100( 结果">

当用户输入值时,我会触发对设置会话变量的 php 脚本的 ajax 调用

 $_SESSION['filter'] = $_POST['filter'];

ajax 调用的成功会触发选项卡单击以访问用户所在的窗体:

 $.ajax({
      type:"POST",
      data:"filter="+filter,
      url:"actions/Tickets/filters.php",
      success:function(result){
         $('#someTab').trigger('click');
      }
 });

我遇到的问题是如果我

print_r($_SESSION);

在表单所在的页面上,我没有看到 $_SESSION['filter'] 值的任何更改。

我认为正在发生的事情是 ajax 没有等待脚本完成,因此永远不会设置 SESSION var。 异步不是一种选择。 我怎样才能做到这一点?

如何使用 ajax 脚本调用 php 文件来设置 SESSION 变量,然后在导航选项卡上触发单击事件。

正如您在评论中所述,您使用以下方法设置会话:

 $_SESSION['filter'] = $_POST['filter'];

比,我认为问题是,当您在 php uisng ajax 调用中设置会话时,您只能通过使用另一个 ajax 调用或在页面刷新后获取更新的会话。因此,再做一个 ajax 调用,看看会发生什么。

你不能在javascript中分配会话,因为javascript发生在客户端,会话存储在服务器端。所以,不可能像js那样使用php变量。

<?php 
$_SESSION['filter'] = "foo";
?>

然后,您可以在 js 中使用此会话变量。但你不能反之亦然。您无法将会话从 js 分配给 php

您可以使用 jquery 将值设置为 jshtml,但此方案是不可能的。

编辑:-

因此,在 filter.php 中设置会话变量。

$_SESSION['filter'] = "foo";

之后,当结果被重新加载时,重新加载页面。因为必须重新加载页面才能设置会话。我不确定它,但可能有效。

 $.ajax({
      type:"POST",
      data:"filter="+filter,
      url:"actions/Tickets/filters.php",
      success:function(result){
         $('#someTab').trigger('click');
         location.reload(); // reload the page
      }
 });
<</div> div class="one_answers">

当然你不能这样分配,因为js是客户端脚本,php是服务器端,你可以将php变量分配给js变量,反之亦然

你需要使用它:

$_SESSION['filter'] = $_POST["filter"];

这篇文章可能会帮助你:通过 ajax 设置 php 会话

相关内容

最新更新