【问题标题】:On change form get value and set as session variable在更改表单获取值并设置为会话变量
【发布时间】:2020-05-17 04:18:02
【问题描述】:

我有这个表格:

<form id="sessie_datum" method="post">
<input type="text" id="datepicker" placeholder="Klik hier om een datum te kiezen" name="wapbk_hidden_date" value="">
</form>

我想在日期选择器中获取更改日期的值。我得到了这个:

$("form#sessie_datum").change(function() {
            $.ajax({
                type: 'POST',
                url: '/datum.php',
                data: $("form#sessie_datum").serialize(),
                dataType: 'text',
                success: function() {
                    alert('Success');
                }
            });
});

它给了我一个Success alert,但是我现在需要在我的datum.php 文件中做什么来设置session 变量中的值?

datum.php 文件是这样的:

<?php
session_start();

    $_SESSION["datum"] = $_POST["wapbk_hidden_date"];  
    echo $_SESSION["datum"];

?>

【问题讨论】:

  • 好吧,您实际上需要编写一些 PHP 代码。你有什么?如果没有,现在是时候写一些了。如果你这样做,你应该在你的问题中展示它。基本搜索将向您展示如何使用会话。
  • 嗯。你知道如何从你所学的其他东西中解决这个问题吗?
  • 我编辑了我的问题,但是当我打开 datum.php 文件时,没有显示任何内容
  • 在您的datum.php 中添加一个简单的if(isset($_POST["wapbk_hidden_date"])) 将为您节省大量时间。
  • 然后使用您的浏览器开发工具,网络面板,检查请求实际得到的答复。

标签: php jquery session post session-variables


【解决方案1】:

这是一个简短的工作示例,基于您的代码:

HTML (datum.html):

<html>
    <head>
        <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
    </head>
    <body ng-app="myApp">
        <form id="sessie_datum" method="post">
            <input type="text" id="datepicker" placeholder="Klik hier om een datum te kiezen" name="wapbk_hidden_date" value="">
        </form>
        <script>
            $("#datepicker").change(function () {
                $.ajax({
                    type: 'POST',
                    url: 'datum.php',
                    data: $("#sessie_datum").serialize(),
                    dataType: 'text',
                    success: function (data) {
                        console.log('success!');
                        console.log(data);
                    },
                    error: function(data){
                        console.log('error!');
                        console.log(data);
                    }
                });
            });
        </script>
    </body>
</html>

PHP (datum.php):

<?php
    session_start();
    if(isset($_POST['wapbk_hidden_date'])){
        $_SESSION['datum'] = $_POST['wapbk_hidden_date'];
    }

    if(isset($_SESSION['datum']) && strlen($_SESSION['datum']) > 0){
        echo $_SESSION['datum'];
    }else{
        echo 'No datum yet defined.';
    }
?>

控制台输出:

datum.html:17 success!
datum.html:18 This string is coming from the HTML input.

将这两个文件放在您的网络服务器上的同一个文件夹中,并在您对输入字段执行更改时观察控制台(在模糊时)。

【讨论】:

  • 谢谢伙计,这行得通。只是看起来像一个插件把事情搞砸了。如果我禁用插件并更改字段的值,我会得到一个成功函数并设置会话变量。如果我启用该插件,我将获得具有正确数据的成功功能,但打开 datum.php 仍然显示“尚未定义数据”。很奇怪。
  • @LTCode,您可能知道,session_start() 必须在输出任何 HTML 之前调用,因此很可能您的插件会在脚本运行之前导致 HTML 输出。
  • 好的,我该如何检查?
  • 您可以在datum.php 中的$_SESSION['datum'] = $_POST['wapbk_hidden_date']; 之前添加die(),并观察是否有任何HTML 输出到开发控制台中。
猜你喜欢
  • 2016-04-04
  • 2016-09-16
  • 2011-04-17
  • 2012-12-14
  • 2015-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多