【问题标题】:How to store js variable into php without using $_SESSION["name"] = "<script>document.write(name)</script>";?如何在不使用 $_SESSION["name"] = "<script>document.write(name)</script>"; 的情况下将 js 变量存储到 php 中?
【发布时间】:2016-06-04 06:45:08
【问题描述】:

我尝试使用 $_SESSION["name"] = "document.write(name)";如果我回应它,​​它就会起作用。但是如果我要将此 SESSION 变量显示到文本框中或使用它来执行 SQL,它会显示 document.write(name)。如何正确地将其存储到 php 变量中?我搜索过,很多人说你不能转换它。但肯定有某种方式我可以使用 Javascript 变量(名称)在文本框中显示它或在 SQL 中使用它。

带有变量名的javascript代码。

<script>
    var name;
    $(document).ready(function()
    {
        $('#info tr #name').click(function()
        {
            name = $(this).text();
            alert(name);
            window.location = 'CV.php';
        });
    });
</script>

对于 SQL,我的代码是这样的,

<?php $_SESSION["name"] = "<script>document.write(name)</script>"; 
    echo $_SESSION["name"];
    $connect = mysqli_connect("localhost", "root", "","test1");
    $sql = "SELECT Name, Number, Expertise, Status, Remarks FROM particulars WHERE Name ='". $_SESSION["name"]."'";

    $result = mysqli_query($connect, $sql);

    while($row= mysqli_fetch_array($result))
    {
        $name = $row['Name'];
        $number =$row['Number'];
        $Expertise =$row['Expertise'];
        $status =$row['Status'];
        $remarks =$row['Remarks'];
    }
?>

下面是我的代码,试图将我在会话中存储的变量显示到文本框中。

<input type='text' value='" .htmlspecialchars($_SESSION['name']) . "'/>

【问题讨论】:

  • PHP 是服务器端,document.write 是 JS,客户端。 PHP 不会对其进行解析,而是将其作为字符串回显。当您回显它时它会起作用,因为您的浏览器会这样做。但是当你把它放在文本值中时,浏览器会将它视为一个值(字符串不是要呈现的函数)

标签: javascript php session variables


【解决方案1】:
<script>
    var name;
    $(document).ready(function()
    {
    $('#info tr #name').click(function()
    {

        name = $(this).text();
        alert(name);
        window.location = 'CV.php?name=' + name; // send in link

    });
    });
    </script>

CV.PHP 内部

if(isset($_GET['name']))
{
    $name = $_GET['name']; // Get it from URL
    $_SESSION["name"] = $name; 
}
else
{
    $name = $_SESSION['name']; // Get it from session
}
$connect = mysqli_connect("localhost", "root", "","test1");
$sql = "SELECT Name, Number, Expertise, Status, Remarks FROM particulars WHERE Name ='". $_SESSION["name"]."'";

$result = mysqli_query($connect, $sql);

while($row= mysqli_fetch_array($result))
{
   $name = $row['Name'];
   $number =$row['Number'];
   $Expertise =$row['Expertise'];
   $status =$row['Status'];
   $remarks =$row['Remarks'];
} ?>

在输入框中显示:

    <input type='text' value='" .$name . "'/> // echo value as string
    <input type='text' value='" .$_SESSION['name']. "'/> // if it's a page that is not CV.php

【讨论】:

  • NP :)。像这样的问题让我怀念我第一次编程的日子:')
  • 嗨@MoussaKhalil!你给我的代码有效!但是,在我进入 CV.php 页面后,我有一个更新按钮,用于刷新我的页面,并且 $name = $_GET['name'] 将无法被检测到。我认为原因是因为该页面不是来自select.php。它是从 CV.php 到 CV.php。因此,您有什么方法可以让我仍然能够在某处捕获和存储名称,这样即使我刷新页面,名称也不会被刷新。谢谢!:)
  • 天哪,你真的帮了我这么多!你认为你能再次帮助我吗?哈哈,因为现在我在做更新按钮时遇到了麻烦。好像不能更新了我的更新代码是: {if(isset($_POST['update'])) { $UpdateQuery = "UPDATE details SET Name = '$_POST[name]', Number= '$_POST[number]', " . “专业知识='$_POST[expertise]',状态='$_POST[status]',备注='$_POST[remark]' WHERE Name ='$_POST[hidden]'”; mysqli_query($connect, $UpdateQuery); }}
  • cant.. 当我全部更改为那个时,他们会给我一个错误
  • @Samuel 等等,这完全是错误的。试试这个并告诉我错误(如果有的话)$UpdateQuery = "UPDATE details SET Name = '"。 $_POST['name']."', Number= '"。 $_POST['number']." ', " . "Expertise= '".$_POST['expertise']." ', Status= '".$_POST['status']." ', Remarks= '".$_POST['remark']." ' WHERE 名称= '".$_POST['隐藏']." '"; mysqli_query($connect, $UpdateQuery);
猜你喜欢
  • 2021-07-30
  • 2013-02-11
  • 2021-05-31
  • 2014-08-31
  • 2011-08-29
  • 1970-01-01
  • 2018-01-28
  • 1970-01-01
  • 2017-03-17
相关资源
最近更新 更多