Php $\u使用ajax设置时GET变量未保持设置状态?

Php $\u使用ajax设置时GET变量未保持设置状态?,php,jquery,ajax,Php,Jquery,Ajax,很抱歉,我是ajax新手,一般来说编程都很好 我有一组div,每个div包含一组用于电子通信站点的产品。单击某个股票按钮时,一次只能看到一个div 当用户单击visible div中显示的产品时,用户将进入显示产品详细信息的新页面。基本上,我想做的是,当用户单击浏览器中的后退按钮时,有一个历史记录,我希望它返回到加载页面时可见的最后一个div 我试图在用户打开产品div时使用ajax向php文件发送一个变量,然后在用户返回并重新加载页面时检索该变量。我可以将变量fine with ajax发送到

很抱歉,我是ajax新手,一般来说编程都很好

我有一组div,每个div包含一组用于电子通信站点的产品。单击某个股票按钮时,一次只能看到一个div

当用户单击visible div中显示的产品时,用户将进入显示产品详细信息的新页面。基本上,我想做的是,当用户单击浏览器中的后退按钮时,有一个历史记录,我希望它返回到加载页面时可见的最后一个div

我试图在用户打开产品div时使用ajax向php文件发送一个变量,然后在用户返回并重新加载页面时检索该变量。我可以将变量fine with ajax发送到php文件,并返回相同ajax函数的success属性。但是在那之后,当我试图检索变量时,它显示为unset

Ajax发送方法:

    // when the user clicks the apparel stock button the corresponding div becomes visible 
    $("#stockApparel").click(function(){

      var $apparel = "apparel";

      $.ajax({

          url: "php/panel.php",

          data: { panel: $apparel },

          type: "get",

          dataType: "text",

          success: function(response){
              alert(response); // response is "apparel" as intended/
          },

      });


      $("#stockButtons").animate({left: '1140px'});
      $("#new").animate({left: '-470px'});
      $("#apparel").show(700);
      $("#marketing").hide(100);

      var divPosition = $('#shippingImg').offset();
      $('html, body').animate({scrollTop: divPosition.top}, "slow");

  });
获取检索变量的方法

$(window).load(function(){
         alert('window has been fully loaded');

        $.get("php/panel.php", function(data, status){
            alert("Data: " + data + "\nStatus: " + status); // returns as "variable not set".
        });

     });
if (isset($_GET['panel'])) { // check if varaiable has been set

    $panel  = $_GET['panel'];
    switch ($panel) {
        case "collectable":
            echo "collectable";
        break;

       case "apparel":
           echo "apparel";
       break;

       default:
    }
 } else echo "Variable not set."; // if variable is not set

?>
Php文件

$(window).load(function(){
         alert('window has been fully loaded');

        $.get("php/panel.php", function(data, status){
            alert("Data: " + data + "\nStatus: " + status); // returns as "variable not set".
        });

     });
if (isset($_GET['panel'])) { // check if varaiable has been set

    $panel  = $_GET['panel'];
    switch ($panel) {
        case "collectable":
            echo "collectable";
        break;

       case "apparel":
           echo "apparel";
       break;

       default:
    }
 } else echo "Variable not set."; // if variable is not set

?>

即使我将$.get方法直接放在ajax send方法之后,我仍然会从php文件返回“Variable not set”,你知道我做错了什么吗?

Http是无状态的。您需要暂时保存该信息,以便在用户再次请求时返回(页面重新加载)

您可以使用会话变量来持久化它,并从中读取它,然后在服务器页面中返回它

类似这样的事情,(我不是一个PHP的人,但你明白了吗?)


设置面板的值:

$.get("php/panel.php",{panel:'apparel'}, function(data, status){
            alert("Data: " + data + "\nStatus: " + status); // should get the panel variable now..
});

直接回答这个问题:不,get参数在请求之间不停留在服务器端
但是,您可能需要阅读一些客户机-服务器交互的基础知识。
简而言之:在第一种情况下,您发送带有一些参数的GET请求

panel.php?panel=value

在第二种情况下,它只是简单的GET请求,没有它。服务器不保存有关以前请求的信息,也不必保存。如果您想保留这些信息,可能需要使用某种数据库逻辑或会话/cookie缓存(有一个答案,提供了这方面的代码示例)。

不幸的是,我希望在用户打开新产品div时更改panel的值,因此,将panel值设置为$.get方法将不起作用,因为panel值是要更改的。然后
{panel:$('.your_div_元素').val()}
应该可以解决用户更改输入的问题。我将尝试,我以前尝试过使用sessions而不是ajax来执行此操作,并在php文件中运行。但出于某种原因,只有前两行代码会运行$(“#stockButtons”).animate({左:'1140px'})$(“#新”).animate({左:'-470px'})$服装展(700)$(市场营销)隐藏(100)。。。最后两个不会跑凯,谢谢。我以前尝试过使用会话,但运气不太好。我会继续努力