是否有替代选择和重定向来设置会话?

时间:2011-04-15 21:37:36

标签: php jquery ajax

这篇文章与我之前发布的帖子有关但现在问题不同了: https://stackoverflow.com/questions/5671809/selection-on-change-set-session-not-working/5671816#5671816

当我在AJAX中选择select字段时,会话设置并刷新页面以显示会话内的值。我怎么能没有刷新它有这样的句柄

$("#output").something

通过向ajax.php?action=checksessionShipping发送ajax请求来检查每秒,并且如果会话已设置,则ajax文件将返回true,如果未设置则返回false。所以一旦它检测到会话已设置(顺便说一下,会话将在其他堆栈页面上$_SESSION['shipping']。)它将值返回到div。

1 个答案:

答案 0 :(得分:0)

请记住,这是快速而肮脏的代码。它不应该在生产中使用,因为它不是非常安全或可扩展。但是,它会让你开始:

您可以在HTML中执行以下操作:

<div id="mydiv">

</div><!-- END: #mydiv -->

<script type="text/javascript" charset="utf-8">

    var myInterval = setInterval(function() {

        $.ajax({
          url: 'ajax.php?action=checksessionShipping',
          type: 'POST',
          dataType: 'json',
          data: {},
          complete: function(xhr, textStatus) {
            //called when complete
          },
          success: function(data, textStatus, xhr) {

            if (data.session_set == true)
                $("#mydiv").html(data.shipping);
                clearInterval(myInterval);

          },
          error: function(xhr, textStatus, errorThrown) {
            //called when there is an error
          }
        });

    }, 1000);

</script>

在你的PHP中有类似的东西:

<?php

session_start()
$arrReturn = array('session_set' => FALSE);

if (!empty($_SESSION['shipping'])) {

    $arrReturn['session_set'] = TRUE;
    $arrReturn['shipping'] = $_SESSION['shipping'];

}

echo json_encode($arrReturn);
?>