我创建了一个包含多个部分的表单。每次我从某个部分的下拉列表中选择答案时,页面都会清除/刷新已从其他部分输入的数据。我使用"onchange"事件的原因是在提交表单之前在底部显示计算。
B部分:
<label class="sr-only" for="answerone"></label>
<select id="answerOne" name="answerone" onchange="this.form.submit();" class="form-control">
<option value="0" <?php if(isset($_GET['answertwo']) && $_GET['answertwo']=="0") echo "selected"?>>Select One</option>
<option value="1" <?php if(isset($_GET['answertwo']) && $_GET['answertwo']=="1") echo "selected"?> >No</option>
<option value="2" <?php if(isset($_GET['answertwo']) && $_GET['answertwo']=="2") echo "selected"?>>Yes</option>
<option value="3" <?php if(isset($_GET['answertwo']) && $_GET['answertwo']=="3") echo "selected"?>>NA</option>
</select>
E节:
<php ?
$totalscore=array($_GET['answerone'],$_GET['answertwo'], $_GET['answerthree']);
echo array_sum($totalscore) . "%";
?>
也许使用php的JavaScript或ajax可以工作。我尝试使用,但我不知道如何将 JavaScript 变量存储到 php 变量中。我有大约10个问题。
<form>
的默认方法是 POST,因此您的其他数据片段位于 $_POST
变量中。没有看到您的<form>
标签是什么样子的,很难判断这是否是问题所在。
听起来您想要的是不要每次都提交表单,而是使用 AJAX 来处理它。例如,在任何特定的<input/>
标记上,连接一个事件以将数据保存在某个位置,并将新数据显示到计算中。
客户端代码(即。JavaScript)的生存期与服务器端代码不同,这似乎在这里引起了混乱。听起来正在发生的事情是:
- 用户在客户端选择值
- 您的 JavaScript 提交表单,强制加载新页面
- 您的表单没有告诉服务器用户在 #1 中选择的值,或者在重新发送页面时没有使用它
- 结果,您最终会在页面上丢失您的选择。
解决方案是:
- 修复客户端代码以发送选择的值(除非您添加了代码来阻止它,否则它应该已经在这样做)
- 修复服务器端代码以将该值保存在某个位置(例如,在会话或数据库中)
- 修复服务器端代码,以使用该保存的值在返回页面时将相应的"选项"元素标记为"已选择"
确切的解决方法当然取决于您的实际问题是什么。