将变量数据从jQuery保存到PHP并在页面重新加载后获取它

时间:2013-08-17 02:18:53

标签: php javascript jquery ajax

我是PHP的新手并试图解决这个问题,但仍然没有理解。我试图在jQuery中取一个html文本框的值并将其转换为一个变量然后我可以存储为(变量或字符串?)并在页面刷新后再次拉回。

我希望用户点击一个按钮然后执行以下操作:

$('.save').click(function () { 
    // pulls the value from the textarea
    var file = $('#subtext').val();
    // send to php to hold text
    $.ajax({
        url: '/mininote/system/data.php',
        type: 'POST',
        data: { textbox: file },
        success: function(data) {
            alert('Saved data to php!');
            $(save).text('All changes saved.').show().delay(3000).fadeOut(800);
        }
    });

});

然后接收发布数据并存储在php中,直到用户重新加载从中提取数据(或检查是否有)的页面,如此,并替换文本框的值使用来自php的值:

$.ajax({
    url: '/mininote/system/data.php',
    type: 'GET',
    data: { textbox: file },
    success: function(data) {
        // add text back to text box
        $("#subtext").val(data);
    }
});

基本上我正在寻找的是: -

  1. 一种执行ajax POST以插入从文本框中抓取的数据的方法,
  2. 添加到PHP
  3. 在页面重新加载时使用GET请求并将文本框文本替换为PHP文件中的文本。
  4. 我需要将哪些内容放入PHP代码中?或者朝另一个方向走路会更容易吗?我已经使用这种方法在本地存储中工作。我还希望浏览器兼容这项工作。

    我不需要为一堆用户设置它。任何能够增加我对此知识的反应都会有很大帮助。

    编辑:我真的在寻找更多服务器端的东西,因此可以在多个平台和设备上使用。

6 个答案:

答案 0 :(得分:1)

您可以使用以下简单的PHP脚本来实现目标:

<?php
session_start();

if (isset($_POST['textbox'])) {
   $_SESSION['textbox'] = $_POST['textbox'];
} else {
   echo $_SESSION['textbox'];
}
?>

另一种选择是使用HTTP Cookies。只需使用plugin或简单的document.cookie = "variable=value";等设置JavaScript,然后使用$_COOKIE["variable"]在PHP中访问它。

希望这有帮助。

答案 1 :(得分:1)

实际上 jquery-ajax 的工作原理如下: -

  1. 需要请求
  2. 它给出了回应。
  3. 根据您的要求您还需要按照以下步骤操作。所以,为此,你

    1. 请求发送到PHP页面,然后
    2. 从php页面发送响应
    3. 所以用以下内容替换上面的 jquery-ajax 代码部分: -

      $('.save').click(function () { 
          // pulls the value from the textarea
          var file = $('#subtext').val();
          // send to php to hold text
      $.ajax({
          url: '/mininote/system/data.php',
          type: 'POST',
          data: { textbox: file },
          success: function(data) {
              alert('Saved data to php!');
              $('#subtext').val(data);
              $(save).text('All changes saved.').show().delay(3000).fadeOut(800);
          }
      });
      
      });
      

      确保在您的 data.php 页面文本框值将数据插入数据库后回显。这个过程如下: -

      <强> data.php

      <?php
           $textbox = $_POST["textbox"];
              /*
                   perform Your DB inser part here
               */
            if(data inserted to db)
            {
                  echo $textbox;
            }
      ?>
      

      希望这会对你有帮助。

答案 2 :(得分:0)

在PHP代码中,你可以像这样使用PHP会话变量:

$_SESSION['saveMe'] = $saveMe;

然后,即使在刷新之后,通过在php中使用会话变量来获取它,就像通常使用任何变量一样。

有关详细信息,请参阅http://www.w3schools.com/php/php_sessions.asp

答案 3 :(得分:0)

使用会话,如临时cookie,如下所示。

session_start();
$_SESSION['sessionName'] = $sessionVar;

然后你可以使用session_destroy();

销毁会话

查看更多here

答案 4 :(得分:0)

为什么要将它发送给PHP?
只需在客户端使用cookie保存更好,并使用$ _COOKIE

在PHP中访问

从以下网址下载jQuery.cookie:

carhartl/jquery-cookie 并做:

$('.save').click(function () { 
// save data from textarea to cookie
var data = $.trim($('#subtext').val());
$.cookie('TEXTAREA_VALUE', data);
});

然后去PHP阅读:

<?php
echo $_COOKIE['TEXTAREA_VALUE'];
?>

并删除:

$.removeCookie('TEXTAREA_VALUE', { path: '/' });

好的朋友!

答案 5 :(得分:0)

Ajax主要用于在不重新加载网页的情况下发送数据 - 从客户端(js)到服务器端(php)或从服务器端(php)到客户端(js)。确保在textarea中给出了name-attribute,并且该方法设置为在表单中发布。如果我正确理解您的问题,您可以执行以下操作:

<?php
session_start();

if (isset($_POST['subtext'])) {
    $_SESSION['subtext_value'] = $_POST['subtext'];
}
if (isset($_SESSION['subtext_value'])) {
    $subtextValue = $_SESSION['subtext_value'];
}
else {
    $subtextValue = '';
}
?>
<html>
<body>
<form action="/mininote/system/data.php" method="post">
<textarea id="subtext" name="subtext"><?php echo $subtextValue;?></textarea>
<input type="submit" value="ok" />
</form>
</body>
</html>