Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用ajax提交获取检查值_Javascript_Jquery_Radio Button - Fatal编程技术网

Javascript 使用ajax提交获取检查值

Javascript 使用ajax提交获取检查值,javascript,jquery,radio-button,Javascript,Jquery,Radio Button,首先,我不熟悉ajax和Java脚本。。我已经花了好几天的时间解决这个问题,但我仍然没有弄明白。我已经通读了一些有类似问题的帖子,但我仍然不能正确理解。就这样 非常简单,我想从三个单选按钮之一发布选中的值。我得到的只是第一个单选按钮的值 我尝试了几种方法,但我精简了代码,以便更容易看出问题所在:-) ajax <script type"text="" javascript"=""> $(document).ready(function(){ $("form#submit").

首先,我不熟悉ajax和Java脚本。。我已经花了好几天的时间解决这个问题,但我仍然没有弄明白。我已经通读了一些有类似问题的帖子,但我仍然不能正确理解。就这样

非常简单,我想从三个单选按钮之一发布选中的值。我得到的只是第一个单选按钮的值

我尝试了几种方法,但我精简了代码,以便更容易看出问题所在:-)

ajax

<script type"text="" javascript"="">
$(document).ready(function(){
    $("form#submit").submit(function() {
    // we want to store the values from the form input box, then send via ajax below
    var svar     = $('#svar').attr('value');
    var date     = $('#date').attr('value');
    var email     = $('#email').attr('value');

        $.ajax({
            type: "POST",
            url: "ajax.php",
            data: "svar="+ svar + "&email=" + email + "&date=" + date,
            success: function(){
                $('form#submit').hide();
                //$('form#submit :input').val("");
                $('div.success').fadeIn();
            }
        });
    return false;
    });
});
</script>

$(文档).ready(函数(){
$(“表单提交”).submit(函数(){
//我们希望存储表单输入框中的值,然后通过下面的ajax发送
var svar=$('#svar').attr('value');
变量日期=$(“#日期”).attr('value');
var email=$('#email').attr('value');
$.ajax({
类型:“POST”,
url:“ajax.php”,
数据:“svar=“+svar+”&email=“+email+”&date=“+date,
成功:函数(){
$('form#submit').hide();
//$('form#submit:input').val(“”);
$('div.success').fadeIn();
}
});
返回false;
});
});
表格

<form id="submit" method="post" name="submit" action="">
            <fieldset>
            <legend>Dagens spørgsmål: <? echo $row['question'];?></legend>
                <br>
                <input type="radio" name="svar" id="svar" value="1"><? echo $row['opt1'];?>
                <br>
                <input type="radio" name="svar" id="svar" value="2"><? echo $row['opt2'];?>
                <br>
                <input type="radio" name="svar" id="svar" value="3"><? echo $row['opt3'];?>
                <br>
                    <input name="email" id="email" type="hidden" value="<? echo $email  ?>" />
                    <input name="date" id="date" type="hidden" value="<? echo $date  ?>" />

                <br><br>
                <button type="submit" class="button positive"> <img src="img/tick.png" alt=""> Svar på dagens spørgsmål </button>
            </fieldset>
        </form>

Dagens spørgsmål:





你有几个问题

首先,您的HTML是。ID必须是唯一的,因此每个单选按钮都必须有自己的ID。通过给一组单选按钮赋予相同的名称,可以将它们关联起来。(然后,使用唯一的ID,您可以使用FOR属性将标签与每个标签关联起来,该属性通过简化屏幕阅读器和提供更大的点击目标来提高可访问性)

其次,单选按钮的值是固定的。问题是“它是否成功?”这取决于它是否被检查。如果手动执行此操作,则必须在组中的每个单选按钮上循环,直到找到一个选中的按钮(或使用仅匹配选中比率按钮(
:checked
)的选择器)

第三,通过将字符串混合在一起构建表单数据,而不确保数据是URL安全的(使用)


解决方法是忘记手动执行所有这些操作,只需在表单上使用jQuery方法

首先:对多个元素使用相同的id。ID-s应该是唯一的,并且应该使用类名或其他方式来寻址元素。所以不是

$('#svar')
你应该使用

$('input[name=svar]')
以引用复选框组

第二:这里有一个小错误:

$('#svar').attr('value');
是第一个单选按钮的值属性的值,而

$('input[name=svar]:checked').val();
将为您提供使用
input[name=svar]
选择的组中选中单选按钮的值


编辑:thx@Quentin指出我的错误。

首先要知道的是
id
在html文档中应该是唯一的

ID类型的属性之所以特别,是因为没有两个这样的属性 属性可以具有相同的值

[引自css2选择器]

您对三个单选按钮具有相同的id

现在,当您使用
var svar=$('#svar').attr('value');
时,只会选择第一个单选按钮。因此,无论选择了哪个单选按钮,只会获得第一个单选按钮的值


现在,如果要选择单选按钮,必须使用jQuerys。

将数据插入数据库,而不是HTML文档。您需要使数据对数据库而不是HTML安全。不要使用
htmlspecialchars
,请使用以下数据库插入方法:。(如果以后将数据从数据库中取出并插入HTML文档,则将使用
htmlspecialchars
)。
val
,而不是选中的。
$('input[name=svar]:checked').val();