将值从javascript传递到PHP(使用隐藏字段)

将值从javascript传递到PHP(使用隐藏字段),javascript,php,mysql,validation,Javascript,Php,Mysql,Validation,在做了一些谷歌搜索之后,我仍然感到困惑。。。 我试图通过隐藏字段将计数的单选按钮值Javascript传递给PHP,该字段稍后将插入数据库MySQL。 我有一个名为test.html的表单 <html> <head><script type="text/javascript" src="../js/script.js"></script</head> <body> <form name="myform" method="po

在做了一些谷歌搜索之后,我仍然感到困惑。。。 我试图通过隐藏字段将计数的单选按钮值Javascript传递给PHP,该字段稍后将插入数据库MySQL。 我有一个名为test.html的表单

<html>
<head><script type="text/javascript" src="../js/script.js"></script</head>
<body>
<form name="myform" method="post"
 onSubmit="return validateRadio()" action="">

<table class="tftable" border="1">
<tr><th><div align="center" class="tftable th">Questions</div></th><th colspan="2"><div align="center">Answer</div></th>
</tr>
<tr>
  <td>I like to dance</td>
  <td>
  <label></label>
  <label>
  <input name="bm1" type="radio" value="1" />
  Yes</label>
</td>
<td>
<label></label>
<label>
<input name="bm1" type="radio" value="2" />
No
</label>
</td></table>
<input type="hidden" name="passvalue" id="passvalue" value="">
</form>
</body>
</html>
下面是计算单选按钮的script.js。。。我要传递的值是answeramount值

function validateRadio()
{
// get all the inputs type
var inputs = myform.elements;
var radios = [];

// find the radio type
for (var i = 0; i < inputs.length; ++i) {
if (inputs[i].type == 'radio') {
radios.push(inputs[i]);
}
}
var countChecked = 0;
for (var j = 0; j < radios.length; j++) {
if (radios[j].checked) {
countChecked++;
}
}
//count number of radio button with value=1
var answeramount = 0;
for (var k = 0; k < radios.length; k++){
if(radios[k].checked && radios[k].value==1){
answeramount++;
}
}
if (countChecked != radios.length / 2){
alert("All questions must be answered.");
return false; // abort submit
} else {
alert("All questions have been answered.");
return true; // proceed to submit
} 
}
请告诉我如何将answeramount值传递给php,稍后将插入数据库。谢谢

编辑:


下面是一个

您可以使用该简单代码来操作输入值:

var field = document.getElementById('#passvalue');
field.value = answeramount;
把这个剪下来的东西放在你的计数和警报之间

php端将是一个标准的POST-to-sql脚本,有几个教程
您隐藏的输入将是$\u POST['passvalue']

更正您的HTML:阅读注释

在函数中添加

...
else {
    alert("All questions have been answered.");
    document.getElementById("passvalue").value = answeramount;
    return true; // proceed to submit
}
...
在PHP中,您可以从$u POST['passvalue']获取值

更新: 可读性更好的代码:

<?php
// check: if the index "passavlue" is set
// equivalent to ternary operator [ expression ? <give true> : <give false> ] 
if( isset( $_POST[ 'passvalue' ] ) ){
    // cast the string to integer
    $passvalue = (int) $_POST[ 'passvalue' ];
}
else{
    $passvalue = 0;
}
?>

$passvalue=isset$_POST['passvalue']?$_POST['passvalue']:

passvalue字段应为

输入类型=隐藏名称=passvalue id=passvalue值=echo$passvalue

在javascript上

所有问题都已回答。;
document.getElementsById'passvalue'。Value=answeramount

将提交更改为onSubmitok。。我已经编辑过了。。谢谢@Scottw你什么意思?>$passvalue=isset$_POST['passvalue']?$_POST['passvalue']:;这和$passvalue=isset$\u POST['passvalue']不一样吗?为什么要使用jQuery来完成一个简单的任务?枪和麻雀!我对Javascript和jQuery非常陌生。我应该把jQuery放在哪里@haukeYou是对的,jQuery在这里不是必需的。我编辑了我的帖子。另外,还有关于在隐藏字段值中放置此项的说明:我非常感谢您的帮助。我已经更新了代码。。。实际上,我将创建另一个php文件,其中包含您的php代码以捕获值。。。请看一下除了PHP位置之外,代码是否正确@莱瑟尔
<?php
// check: if the index "passavlue" is set
// equivalent to ternary operator [ expression ? <give true> : <give false> ] 
if( isset( $_POST[ 'passvalue' ] ) ){
    // cast the string to integer
    $passvalue = (int) $_POST[ 'passvalue' ];
}
else{
    $passvalue = 0;
}
?>