Javascript 尝试使用POST调用另一个PHP页面
我试图从另一个PHP页面(Javascript 尝试使用POST调用另一个PHP页面,javascript,php,html,post,Javascript,Php,Html,Post,我试图从另一个PHP页面(RumpUserAdministration.PHP)调用一个PHP页面(ModifyUsers.PHP)。我试图将其作为一个单独的页面,而不是作为用户管理页面的一个子部分来调用,并使用POST将值userID从RumpUserAdministration.php传递到ModifyUsers.php 我添加了alert语句,表明userID存储在调用修改用户页面之前的隐藏id字段中,因此可用于发布,但不会传输到修改用户页面 我还添加了alert语句,指示在页面执行的这些
RumpUserAdministration.PHP
)调用一个PHP页面(ModifyUsers.PHP
)。我试图将其作为一个单独的页面,而不是作为用户管理页面的一个子部分来调用,并使用POST将值userID
从RumpUserAdministration.php
传递到ModifyUsers.php
我添加了alert
语句,表明userID
存储在调用修改用户页面之前的隐藏id字段中,因此可用于发布,但不会传输到修改用户页面
我还添加了alert
语句,指示在页面执行的这些点上正在使用哪个服务器请求方法。我页面上的其他按钮同样需要调用其他页面
我的问题是:如何使用POST调用我的修改用户页面,以便使用POST传递我的价值
我能够同时使用GET和会话变量,但是这个特定场景集中在GET之后,并且不使用会话变量
我已经就这个问题咨询了我的同学和所有的讲师,并在20多个不同的网站和多次搜索中寻找解决方案。提出的“解决方案”没有一个被证明是有效的——人们现在和我一样困惑,网页使用的方法只适用于更新源页面,而不是调用一个新的或完全错误的方法
以下是我用于解决此问题的文件
RumpUserAdministration.php
<!DOCTYPE html>
<html>
<head>
<meta name = "viewport"
content = "width=device-width, initial-scale=1.0"
>
<meta charset = "utf-8">
<link href = "CSS/RumpIntranetProject.css"
rel = "stylesheet"
type = "text/css"
>
</head>
<body>
<?php
echo "<script>alert( \"" . $_SERVER[ "REQUEST_METHOD" ] . "\" )</script>";
?>
<form id = "entire-page"
action = "RumpUserAdministration.php"
method = "post"
>
<div id = "user-name-list-section">
<div id = "user-name-list">
<div id = "ID15"
class = "list-item row"
name = "ID15"
onclick = "userNameListItemClicked( '15' )"
>
SAMPLE USER 001
</div>
<div id = "ID16"
class = "list-item row"
name = "ID16"
onclick = "userNameListItemClicked( '16' )"
>
SAMPLE USER 002
</div>
</div>
</div>
<input id = "user-administration-button-delete"
name = "delete-submit"
onclick = "loadDeleteUsers()"
type = "submit"
value = "Delete"
>
<input id = "user-administration-button-modify"
name = "modify-submit"
onclick = "loadModifyUsers()"
type = "submit"
value = "Modify"
>
<input id = 'hidden-id-field'
name = 'userID'
type = 'hidden'
value = ''
>
</form>
<?php
if ( $_SERVER[ "REQUEST_METHOD" ] == "POST" )
{
if ( isset( $_POST[ 'modify-submit' ] ) )
{
echo "<script>document.getElementById( 'hidden-id-field' ).value = \"" . $_POST[ 'userID' ] . "\"</script>";
echo "<script>alert( \"hidden-id-field (userID) : \" + document.getElementById( 'hidden-id-field' ).value )</script>";
echo "<script>alert( \"" . $_SERVER[ "REQUEST_METHOD" ] . "\" )</script>";
echo '<script>window.location = "ModifyUsers.php"</script>';
}
else
{
echo "<script>alert( 'Unexpected Administration POST encountered.' )</script>";
}
}
?>
<script>
var existingSelection = null;
function loadModifyUsers()
{
document.getElementById( 'hidden-id-field' ).value = existingSelection;
alert( "Presubmit" );
document.getElementById( 'entire-page' ).submit;
}
function userNameListItemClicked( userID )
{
existingSelection = 'ID' + userID;
document.getElementById( "user-administration-button-modify" ).style.cursor = "pointer";
document.getElementById( "user-administration-button-modify" ).disabled = false;
}
</script>
</body>
</html>
我不确定这个问题是否是由于遗漏了include
、打字错误、错误的命令或其他原因造成的,我无法说出故障所在。因此,为了完整性,我必须包含每个简化文件的全部内容。我正在研究“极小”的定义:) 看起来您正在使用JavaScript更改页面:
echo '<script>window.location = "ModifyUsers.php"</script>';
echo'window.location=“ModifyUsers.php”;
您在这里所做的是加载ModifyUsers.php
,但是[因为这是一个GET]无法通过POST传递任何内容
相反,您需要做的是将表单的操作更改为转到ModifyUsers.php
:这样您的帖子数据就会传递到正确的页面。这是我刚刚开发的一个答案。如果有其他方式回答这个问题,那么请发布它们
我已经将每个提交按钮放在它自己的表单中,包括每个表单中的一个隐藏字段
这些按钮中的每一个都成功地调用了它的形式,而不是其他形式
以下是我使用的RumpUserAdministration.php的修改版本(ModifyUsers.php和RumpIntranetProject.css在问题中保持不变)
样本用户001
样本用户002
var existingSelection=null;
函数loadDeleteUsers()
{
document.getElementById('hidden id field delete')。value=existingSelection;
}
函数loadModifyUsers()
{
document.getElementById('hidden id field modify')。value=existingSelection;
}
函数userNameListItemClicked(userID)
{
existingSelection='ID'+userID;
document.getElementById(“用户管理按钮修改”).style.cursor=“指针”;
document.getElementById(“用户管理按钮修改”).disabled=false;
}
有两条建议:(1)简化这堵代码墙并生成一个新代码;(2)不要在PHP文件名中使用空格,这样可以省去很多麻烦。删除空格-没有效果。更多内容请关注。感谢您的链接,Ed Cottrell。我一直在寻找这份文件。我已经编辑了这份文件,希望它更易于管理。请随时提出任何改进建议或提出任何问题。谢谢您的回答。如果Modify Users是从单键表单调用的唯一页面,则这是很好的。但是我的完整用户管理页面为用户提供了其他选项,例如允许他们调用删除用户页面。如何仅当用户单击“修改”按钮(并使用POST传递值)时才调用“修改用户”页面?请注意:我已经更新了我的问题,以反映问题的这一方面。
html,
*
{
border : 0;
box-sizing : border-box;
margin : 0;
padding : 0;
}
.list-item
{
display : block;
}
.list-item:hover
{
background-color : #00ffff;
}
.row:after
{
clear : both;
content : "";
display : block;
}
#user-name-list
{
border : 1px;
border-color : black;
border-style : solid;
overflow-y : scroll;
width : 300px;
}
echo '<script>window.location = "ModifyUsers.php"</script>';
<!DOCTYPE html>
<html>
<head>
<meta name = "viewport"
content = "width=device-width, initial-scale=1.0"
>
<meta charset = "utf-8">
<link href = "CSS/RumpIntranetProject.css"
rel = "stylesheet"
type = "text/css"
>
</head>
<body>
<?php
echo "<script>alert( \"" . $_SERVER[ "REQUEST_METHOD" ] . "\" )</script>";
?>
<div id = "user-name-list-section">
<div id = "user-name-list">
<div id = "ID15"
class = "list-item row"
name = "ID15"
onclick = "userNameListItemClicked( '15' )"
>
SAMPLE USER 001
</div>
<div id = "ID16"
class = "list-item row"
name = "ID16"
onclick = "userNameListItemClicked( '16' )"
>
SAMPLE USER 002
</div>
</div>
</div>
<form id = "form-delete"
action = "Index.php"
method = "post"
>
<input id = 'hidden-id-field-delete'
name = 'userID'
type = 'hidden'
value = ''
>
<input id = "user-administration-button-delete"
name = "delete-submit"
onclick = "loadDeleteUsers()"
type = "submit"
value = "Delete"
>
</form>
<form id = "form-modify"
action = "ModifyUsers.php"
method = "post"
>
<input id = 'hidden-id-field-modify'
name = 'userID'
type = 'hidden'
value = ''
>
<input id = "user-administration-button-modify"
name = "modify-submit"
onclick = "loadModifyUsers()"
type = "submit"
value = "Modify"
>
</form>
<script>
var existingSelection = null;
function loadDeleteUsers()
{
document.getElementById( 'hidden-id-field-delete' ).value = existingSelection;
}
function loadModifyUsers()
{
document.getElementById( 'hidden-id-field-modify' ).value = existingSelection;
}
function userNameListItemClicked( userID )
{
existingSelection = 'ID' + userID;
document.getElementById( "user-administration-button-modify" ).style.cursor = "pointer";
document.getElementById( "user-administration-button-modify" ).disabled = false;
}
</script>
</body>
</html>