【问题标题】:Can't get input value from other page无法从其他页面获取输入值
【发布时间】:2016-08-01 13:02:24
【问题描述】:

我想从其他页面获取输入值,为什么它不起作用?

代码如下:

第 1 页:

<h1 align="center">
    <form name="form" action="" method="get">
        <input type="text" name="wonorlose" id="wonorlose" value="50">
    </form>
</h1>

点击按钮:

<script>
    function rollHead(){
        var die1 = document.getElementById("die1");
        var status = document.getElementById("status");
        var d1 = Math.floor(Math.random() * 2) + 1;
        if(d1 == 1)
        {
            die1.innerHTML = "You lose!";
            fliped.innerHTML = "Fliped Tail!";
            var getsession = new XMLHttpRequest();
            getsession.open('POST','getsession.php',true);
            getsession.send();
            var ajax = new XMLHttpRequest();
            ajax.open('POST','lose.php',true);
            ajax.send();
        }
        else if (d1 == 2)
        {
            die1.innerHTML = "You won!";
            fliped.innerHTML = "Fliped Head!";
            var getsession = new XMLHttpRequest();
            getsession.open('POST','getsession.php',true);
            getsession.send();
            var ajax = new XMLHttpRequest();
            ajax.open('POST','won.php',true);
            ajax.send();
        }
    }
</script>

页面ajax.php:

<?php
    session_start();
    include_once 'dbconnect.php';

    if(!isset($_SESSION['user']))
    {
        header("Location: /manopuslapis/index.php");
    }
    $res=mysql_query("SELECT * FROM users WHERE user_id=".$_SESSION['user']);
    $userRow=mysql_fetch_array($res);

    $_SESSION['wonorlose'] = $wonorlose;
    echo $wonorlose;
    mysql_query("UPDATE `users` SET credits=credits+'$wonorlose' WHERE user_id=".$_SESSION['user']); 
?>

页面getsession.php:

<?php
    session_start();
    include_once 'dbconnect.php';

    if(!isset($_SESSION['user']))
    {
     header("Location: /manopuslapis/index.php");
    }
    $res=mysql_query("SELECT * FROM users WHERE user_id=".$_SESSION['user']);
    $userRow=mysql_fetch_array($res);

    $_SESSION['wonorlose'] = $_GET["wonorlose"];
?>

P.S 滚动系统正常工作,我收到消息是赢了还是输了,但我的数据库中没有任何反应。如果我将第 2 页 $winorlose 更改为数字,它可以工作。

我认为会话可能有问题。

【问题讨论】:

  • 你开始会话了吗?
  • 你不能混合使用 javascript 和 PHP。 PHP 在页面加载之前运行,javascript 在之后运行。如果要更新会话,则需要向 PHP 页面发送 ajax 调用。
  • money=money+'$wonorlose' 至少应该是money=money+'" . $wonorlose . "',还有什么不好的......
  • 如果你看到我在函数 roolhead @aynber 上调用它
  • @NiekasNiekas 是的,但那是在 javascript 函数中。 PHP 已经解析出页面并在按下按钮时完成。如果页面加载时 $_GET 为空,则会话将为空。如果要在按下按钮时更新会话,则需要使用 ajax 向服务器发送请求。

标签: php jquery session


【解决方案1】:

您不能像这样创建会话:

<script>
function rollHead(){
    .....
    <?php
    $_SESSION['wonorlose'] = $_GET["wonorlose"];
    ?>
......
}

因为 php 在浏览器上解析 html 时运行。所以从技术上讲,没有保存名称为“wonorlose”的会话。

在这种情况下,您必须进行 ajax 调用来创建会话并再次调用来读取它。

【讨论】:

  • 但如果我创建具有此功能的其他页面: $_SESSION['wonorlose'] = $_GET["wonorlose"];它将如何获得可变值,因为它仍在第 1 页上
  • 您必须调用 ajax 来创建会话,然后在您的第 2 页上使用 $_SESSION['wonorlose'] = $wonorlose;
  • 我创建了这个,但它不起作用我在 roolhead 上调用它
【解决方案2】:

试试这个

session_start();
$_SESSION['wonorlose'] = $wonorlose;
echo $wonorlose;
mysql_query("UPDATE `users` SET money=money+'$wonorlose' WHERE user_id=".$_SESSION['user']);

【讨论】:

  • echo this `"UPDATE users SET money=money+$wonorlose WHERE user_id=".$_SESSION['user'] 结果如何?
  • 如果我改变 mysql_query("UPDATE users SET money=money+'$wonorlose' WHERE user_id=".$_SESSION['user']); to money=money+10 WHERE user_id=".$_SESSION['user']); 它可以工作并增加 +10 钱
猜你喜欢
  • 1970-01-01
  • 2019-04-13
  • 1970-01-01
  • 1970-01-01
  • 2020-02-11
  • 2016-12-05
  • 1970-01-01
  • 2017-08-17
  • 1970-01-01
相关资源
最近更新 更多