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

Javascript 仅使用HTML/PHP/JScript从两个不同的HTML源向单个PHP脚本发送变量,javascript,php,html,forms,post,Javascript,Php,Html,Forms,Post,我有一种情况,一个页面是由两个不同的HTML源通过在容器的第三个页面中相互结合而构建的。每个部分还有一个变量,它们使用POST传递到一个PHP文件的形式。这些变量在每次执行中都会发生变化(当它们一起形成一个页面时) 例如: <!--Start of HTML 3 --> <html> <!-- Start of HTML 1 --> <body> <a href='process.php' id='php1' name='php1' onc

我有一种情况,一个页面是由两个不同的HTML源通过在容器的第三个页面中相互结合而构建的。每个部分还有一个变量,它们使用POST传递到一个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 -->

这里的东西

这里还有一些东西

还有一些细节:

这些表单彼此独立,连接起来会很困难,因为它们是使用以前处理其他变量的过程创建的

代码可以添加到HTML1和HTML2中,但不能添加到HTML3中

这一个只能将var1发送到process.php(它可以使用$\u POST调用它)。如何使用基本技术(例如不包括JQuery、AJAX等),使用单个链接将这两个变量提交到单个PHP文件中?有没有比不使用URI而使用forms/POST更好的方法

编辑:我使用的方法是@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 -->

这里还有一些东西


我可以想到的三种方法

-对html2中的输入标记使用form属性。

-只要HTML1和HTML2没有单独使用,那么您就可以在HTML1中打开表单,然后在HTML2中关闭表单 您的IDE可能会抛出错误,但它应该可以工作


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


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

您可能会整理两个表单的onformation,并使用ajax和FormData对象发送它们

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 );
}
函数submitforms(){
var f2=document.getElementById('infoForm2');
var data=newformdata(document.getElementById('infoForm');
对于(i=0;i
我发现您可以将它们提交到同一页面。问题到底出在哪里?@Mouneer:点击一次链接就可以同时发送两个变量。好吧,你为什么不把表单合并成一个表单呢?你不能同时在同一个页面上发布两个表单。即使使用ajax进行此操作,仍然会收到两个对页面的不同请求。您只需要提出一个请求,就像将两个表单合并到一个您发布的表单中一样。或者,您可以创建一个js函数,只从两个表单获取值,然后使用ajax将它们发布到一个请求中。由于您对标记没有任何控制权,也不想使用JavaScript,因此您的问题恐怕无法解决。为什么不能使用JavaScript?或者告诉我们是什么迫使您使用像这样的分离标记?这里的方式1是我为了简单而使用的方式。通过form标签引用其中一个表单,可以使第二个变量链接到第一个表单,并且只发送第一个表单。我将详细说明原始问题的答案。