Jquery ajax设置一些会话变量然后触发click

时间:2017-06-16 06:04:21

标签: php jquery ajax session

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

当用户输入一个值时,我会激活对设置会话变量的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永远不会被设置。 asynch不是一个选择。我怎么能实现这个目标呢?

如何使用ajax脚本调用php文件来设置SESSION变量,然后在导航标签上触发click事件。

3 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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

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

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

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

修改: -

因此,在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
      }
 });

答案 2 :(得分:0)

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

您需要使用此功能:

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

这篇文章可以帮到你: Set php session via ajax