表单决策-JavaScript/AJAX

表单决策-JavaScript/AJAX,javascript,php,html,ajax,Javascript,Php,Html,Ajax,我对表格中的决策部分有点进退两难。我试图在html页面中创建一个带有单选按钮和复选框的表单,但我想从我的.php页面检索数据。 我认为代码的.php部分存在问题。不管我做了什么选择,我都会从每个“如果”语句中得到响应。 例如,如果我选择radio1和复选框,我会得到radio1和复选框。Radio2和复选框。Radio3和复选框。这是任何查询的结果类型 建议 HTML表单 //启动查询字符串 var QueryString=form_test.php?; 如果document.getEleme

我对表格中的决策部分有点进退两难。我试图在html页面中创建一个带有单选按钮和复选框的表单,但我想从我的.php页面检索数据。 我认为代码的.php部分存在问题。不管我做了什么选择,我都会从每个“如果”语句中得到响应。 例如,如果我选择radio1和复选框,我会得到radio1和复选框。Radio2和复选框。Radio3和复选框。这是任何查询的结果类型

建议

HTML表单

//启动查询字符串 var QueryString=form_test.php?; 如果document.getElementByIdradio1.checked==true&&document.getElementByIdbox.checked{ QueryString=QueryString+radio1=+document.getElementByIdradio1.value+box=+document.getElementByIdbox.value; }否则,如果document.getElementByIdradio2.checked==true&&document.getElementByIdbox.checked{ QueryString=QueryString+radio2=+document.getElementByIdradio2.value+box=+document.getElementByIdbox.value; }否则,如果document.getElementByIdradio3.checked==true&&document.getElementByIdbox.checked{ QueryString=QueryString+radio3=+document.getElementByIdradio3.value+box=+document.getElementByIdbox.value; } //警报查询串; xmlHttp.openGET,QueryString,true; xmlHttp.sendnull; } 测试表

无线电一号

第二台

第三台

复选框


您需要的是php行为吗

if (isset($_GET['box'])) {
    if (isset($_GET['radio1'])) {
        echo "Radio One AND checkbox.";
    }

    if (isset($_GET['radio2'])) {
        echo "Radio One AND checkbox.";
    }

    if (isset($_GET['box'])) {
        echo "Radio Three AND checkbox.";
    }
} else {

    if (isset($_GET['radio1'])) {
        echo "Radio One";
    }

    if (isset($_GET['radio2'])) {
        echo "Radio Two";
    }

    if (isset($_GET['radio3'])) {
        echo "Radio Three";
    }
}

您的代码几乎没有问题,例如:

单选按钮中没有value属性,因此无法使用document.getElementByIdradioX.value获取任何内容。在单选按钮中添加值属性

<input type="radio" name="radbutton" id="radioX" value="radioX" />
按以下方式更改查询字符串:

QueryString = QueryString + "radio=" + ...
因为通过这种方式,您可以更轻松地访问后端PHP页面中的$\u GET['radio']值

换成

因此,您的代码应该如下所示:

HTML

PHP


如果你的$|u GET['box']被选中,不管单选按钮是什么,每个案例都会返回true,因为true | | false是true还是false返回true这是有意义的,但我不确定如何更正,请检查下面的答案。答案比较接近,但不完全正确。选择单选按钮而不是复选框时,不显示回声。如果选择了两者,则选择收音机一或收音机二等。。显示时,它不会回显正确的语句。如果有的话,就改变顺序。我将改进我的答案。问题很可能是我的IF和html表单中的查询语句。当复选框单独选中或仅单选按钮时,您没有任何情况。与我给你的php示例相同的逻辑。我犯的错误比我想象的要多!!我只显示单选按钮时没有显示结果selected@Whistler它在我这边正常工作。把你的代码贴在上面,然后给我链接。我又错了!我漏了一行代码。谢谢你!
QueryString = QueryString + "radio=" + ...
<p>Test Form</p>
<form id="myform" name="myform" method="POST">
    <p>
        <input type="radio" name="radbutton" id="radio1" value="radio1" />
        <label>Radio One</label>
    </p>
    <p>
        <input type="radio" name="radbutton" id="radio2"  value="radio2" />
        <label>Radio Two</label>
    </p>
    <p>
        <input type="radio" name="radbutton" id="radio3" value="radio3">
        <label>Radio Three</label>
    </p>
    <p>
        <input type="checkbox" name="check" id="box">
        <label>CheckBox</label>
    </p>
        <input type="button" name="button" id="button" value="Test Form" onclick="ajaxFunction();"/>
    </p>
</form>
<p>
    <div id="DisplayBox"></div>
</p>
// start the query string
var QueryString = "form_test.php?";
if (document.getElementById("radio1").checked == true){
    QueryString += "radio=" + document.getElementById("radio1").value;
} else if (document.getElementById("radio2").checked == true){
    QueryString += "radio=" + document.getElementById("radio2").value;
} else if (document.getElementById("radio3").checked == true){  
    QueryString += "radio=" + document.getElementById("radio3").value;
} 
if(document.getElementById("box").checked){
    QueryString += "&box=" + document.getElementById("box").value;
}
$str = '';
if(isset($_GET['radio'])){
    switch($_GET['radio']){
        case 'radio1':
            $str .= 'Radio One';
            break;
        case 'radio2':
            $str .= 'Radio Two';
            break;
        case 'radio3':
            $str .= 'Radio Three';
            break;
    }
}
if(isset($_GET['box'])){
    $str .= !empty($str) ? ' AND ' : '';
    $str .= 'Checkbox';
}
echo $str;