首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jquery ajax设置一些会话变量,然后触发单击

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

Stack Overflow用户
提问于 2017-06-16 14:04:21
回答 3查看 873关注 0票数 0

我有一个页面,上面有标签。每个选项卡上都有几个表单。在表单上,用户可以设置过滤器。例如"Show me (10,25,100) result“

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

代码语言:javascript
复制
 $_SESSION['filter'] = $_POST['filter'];

ajax调用的成功触发了tab键的单击,以转到用户所在的表单:

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

我遇到的问题是如果我

代码语言:javascript
复制
print_r($_SESSION);

在表单所在的页面上,我没有看到$_SESSION‘’filter‘值有任何变化。

我认为发生的情况是ajax不会等待脚本完成,所以SESSION var永远不会被设置。异步不是一个选项。我怎么才能得到这个呢?

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

EN

回答 3

Stack Overflow用户

发布于 2017-06-16 14:11:15

正如您在注释中所述,您使用以下命令设置会话:

代码语言:javascript
复制
 $_SESSION['filter'] = $_POST['filter'];

然后,我认为问题是,当你在php中设置一个ajax调用的会话时,那么你只能通过使用另一个ajax调用或在页面刷新之后获得更新的会话。因此,进行另一个ajax调用,看看会发生什么。

票数 0
EN

Stack Overflow用户

发布于 2017-06-16 14:15:39

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

代码语言:javascript
复制
<?php 
$_SESSION['filter'] = "foo";
?>

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

您可以使用jquery将值从js设置为html,但这种情况是不可能的。

编辑:-

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

代码语言:javascript
复制
$_SESSION['filter'] = "foo";

然后,当返回结果时,重新加载页面。因为必须为会话集重新加载页面。我不是很确定,但也许能行得通。

代码语言:javascript
复制
 $.ajax({
      type:"POST",
      data:"filter="+filter,
      url:"actions/Tickets/filters.php",
      success:function(result){
         $('#someTab').trigger('click');
         location.reload(); // reload the page
      }
 });
票数 0
EN

Stack Overflow用户

发布于 2017-06-16 14:16:24

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

你需要用到这个:

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

这篇文章可能会对你有所帮助:Set php session via ajax

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44581880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档