使用ajax设置时$ _GET变量不保持设置?

时间:2015-05-17 13:08:47

标签: php jquery ajax

抱歉,我是ajax和一般编程的新手。

我有一组div,每个div包含一组e-comm网站的产品。单击某个库存按钮时,只能看到一个div。

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

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

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".
        });

     });

Php档案

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

?>

即使我在ajax发送方法之后直接放置$ .get方法,我仍然得到"变量未设置"从php文件返回,任何想法我做错了什么?

3 个答案:

答案 0 :(得分:1)

直接回答这个问题:不,请求之间的参数不会留在服务器端
但是,您可能希望阅读一些客户端 - 服务器交互的基础知识
用两个词来说:在第一种情况下,您发送带有一些参数的GET请求
panel.php?panel=value
在第二种情况下 - 没有它,只是简单的GET请求。服务器不会自己保存有关先前请求的信息,也不必保留。如果你想保留这些信息,你可能想要使用某种数据库逻辑或会话/ cookie缓存(有一个答案,提供代码示例)。

答案 1 :(得分:0)

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

您可以使用会话变量来保存它并从中读取它并将其返回到您的服务器页面。

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

<?php
session_start();
if (!isset($_SESSION['panel'])) {
  // to do : check $_GET['panel'] before setting to session
  $_SESSION['panel'] = $_GET['panel'];
} 
return $_SESSION['panel'];

?>

答案 2 :(得分:0)

设置面板的值:

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