我有一个页面,上面有标签。每个选项卡上都有几个表单。在表单上,用户可以设置过滤器。例如"Show me (10,25,100) result“
当用户输入值时,我将触发对设置会话变量的php脚本的ajax调用
$_SESSION['filter'] = $_POST['filter'];ajax调用的成功触发了tab键的单击,以转到用户所在的表单:
$.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文件来设置会话变量,然后在导航选项卡上触发单击事件。
发布于 2017-06-16 14:11:15
正如您在注释中所述,您使用以下命令设置会话:
$_SESSION['filter'] = $_POST['filter'];然后,我认为问题是,当你在php中设置一个ajax调用的会话时,那么你只能通过使用另一个ajax调用或在页面刷新之后获得更新的会话。因此,进行另一个ajax调用,看看会发生什么。
发布于 2017-06-16 14:15:39
你不能在javascript中分配会话,因为javascript发生在客户端,而会话存储在服务器端。所以,你不可能在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
}
});发布于 2017-06-16 14:16:24
当然你不能这样赋值,因为js是客户端脚本& php是服务器端,你可以将php变量赋值给js变量,但反之亦然。
你需要用到这个:
$_SESSION['filter'] = $_POST["filter"];
这篇文章可能会对你有所帮助:Set php session via ajax
https://stackoverflow.com/questions/44581880
复制相似问题