从js脚本将数据发送到当前的php文件

问题描述 投票:2回答:2

我有一个php文件,content.php,当前正在浏览器中加载:

<html>
    <head>
        <title>Content</title>

        <script src="content.js"></script>
    </head>

    <body>
        <?php
            if ( isset($_POST["status"]) && ($_POST["status"] === 1) ) {
        ?>

            Content for users with status 1

        <?php
            } else {
        ?>

            Content for users with different status

        <?php
            }
        ?>
    </body>
</html>

我想做的是设置

$_POST["status"]

从内部变量

content.js

我曾考虑使用隐藏的html表单并通过javascript单击提交按钮,但这似乎并不是一个优雅的解决方案。

我还考虑过使用XMLHttpRequest,问题是我还没有找到通过XMLHttpRequest将数据发送到当前查看/加载页面的方法。

我没有使用额外的库,只有javascript和php。

有一个更优雅的解决方案我的问题隐藏的HTML表单?

javascript php html ajax
2个回答
1
投票

似乎你需要使用AJAX,因为你需要以隐藏的方式执行服务器端脚本并更新html。

  1. interface.phpcontent.jsdiv
  2. content.js发送ajax post请求与status
  3. content.php根据status发送内容
  4. interface.phpdiv已更新。

这是content.jsinterface.php

let status = 1;
loadDoc(status);

function loadDoc(status) {
  let xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = () => {
    if (xhttp.readyState == 4 && this.status == 200) {
      document.getElementById("content").innerHTML =
      xhttp.responseText;
    }
  };
  xhttp.open("POST", "content.php", true);
  xhttp.send("status=" + status);
}
<html>
    <head>
        <title>Content</title>
        <script src="content.js"></script>
    </head>

    <body>
       <div id="content"></div>
    </body>
</html>

这是你的content.php

<?php
    if ( isset($_POST["status"]) && ($_POST["status"] === 1) ) {
?>

    Content for users with status 1

<?php
    } else {
?>

    Content for users with different status

<?php
    }
?>

答对了!你通过$_POST["status"]设置content.js


0
投票

POST变量只能在请求标头中传递。这意味着它必须是您已经知道的表单提交或AJAX请求。没有办法让单独的客户端资源为现有请求提供新信息。

© www.soinside.com 2019 - 2024. All rights reserved.