我有一个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表单是否有更优雅的解决方案?
答案 0 :(得分:1)
似乎你需要使用AJAX,因为你需要以隐藏的方式执行服务器端脚本并更新html。
interface.php
有content.js
和div
content.js
使用status
content.php
根据status
interface.php
的{{1}}已更新。 以下是div
和content.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请求。没有办法让单独的客户端资源为现有请求提供新信息。