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

时间:2017-12-19 04:51:03

标签: javascript php html ajax

我有一个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表单是否有更优雅的解决方案?

2 个答案:

答案 0 :(得分:1)

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

  1. interface.phpcontent.jsdiv
  2. content.js使用status
  3. 发送ajax发布请求
  4. content.php根据status
  5. 发送内容
  6. interface.php的{​​{1}}已更新。
  7. 以下是divcontent.js

    interface.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"]

答案 1 :(得分:0)

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