仅使用HTML/PHP/JScript将变量从两个不同的HTML源发送到单个PHP脚本



i有一个情况,其中通过在容器第三页中相互结合,用HTML构建了两个不同来源的页面。每个部分还具有一个变量,它们使用帖子到单个PHP文件中通过表单。这些变量在每个执行中都会发生变化(当它们一起形成页面时(。

例如:

<!--Start of HTML 3 -->
<html>
<!-- Start of HTML 1 -->
<body>
<a href='process.php' id='php1' name='php1' onclick='document.getElementById("infoForm").submit()'> A link to php file that receives a hidden form's value</a>
<form id='infoForm' action='process.php' method='POST'>
  <input name ="var1" id="var1" value="changing1" hidden /> 
</form>
<p>Stuff here</p>
<!-- End of HTML 1 -->
<!-- Start of HTML 2 -->
<p>Some more stuff here</p>
<form id='infoForm2' action='process.php' method='POST'>
  <input name ="var2" id="var2" value="changing2" hidden /> 
</form>
</body>
<!-- End of HTML 2 -->
</html> 
<!-- End of HTML 3 -->

更多细节:

表格彼此独立,加入它们将很困难,因为它们是使用与其他变量一起使用的先前过程创建的。

可以在HTML 1和2中添加代码,但不能添加3。

这个只能将var1发送到process.php(可以用$ _post调用(。如何使用基本技术(例如,不包括jQuery,ajax等(,如何使用单个链接将两个变量提交给单个PHP文件?有没有比不使用URI使用表单/帖子更好的方法?

编辑:我使用的方法是@glenn ferns第一点:使用表单属性将第二个属性连接到HTML化妆中的第一个表单:

<!-- Start of HTML 2 -->
<p>Some more stuff here</p>
<input form="infoForm" name ="var2" id="var2" value="changing2" hidden /> 
</body>
<!-- End of HTML 2 -->

我能想到的3种方法

- 在html2中的输入标签的表单属性。https://www.w3schools.com/tags/att_form.asp

- 如果不独立使用HTML1和HTML2,则可以在HTML1中打开表单并在HTML 2中关闭它您的IDE可能会丢失错误,但应该有效

- 使用JS获取值并从JavaScript

提交表单

根据您的评论,您需要提交表格并将变量捕获在一起。这不适用两种表格,因为他们将提交两个不同的请求。由于HTTP是无状态协议,因此每个请求都将远离另一个请求。您可以使用会话来存储第一个请求中的一个值,并在第二个请求的处理中使用它。

另一个解决方案可以使用JavaScript通过AJAX请求发送您的变量。(我没有看到任何有效的用例不使用JavaScript(

您可能会从两种表单中对形式进行整理,并同时使用ajax和formdata objec发送。

function submitforms(){
    var f2=document.getElementById('infoForm2');
    var data=new FormData( document.getElementById('infoForm') );
    for( i=0; i < f2.elements.length; i++ )data.append( f2.elements[i].name, f2.elements[i].value );
    var xhr=new XMLHttpRequest();
    xhr.onreadystatechange=function(){
        if( this.status==200 && this.readyState==4 ){
            alert(this.response)
        }
    };
    xhr.open('POST','process.php',true);
    xhr.send( data );
}

最新更新