用于回答测验的单选按钮和我的单选按钮是
<input id="ans_ans1" name="ans" type="radio" value="ans1">
我的下一个ajax请求是
<a href="#" onclick="Element.show('loader'); jQuery.ajax({data:'answer='+$('ans').value+'&passed_question=1&'+'&exam_group_id=1&' + '&authenticity_token=' + encodeURIComponent('GGKdjhC39b1Fi5fe52Cq0VcPwpi6laphZblC/5ZOl8o='), dataType:'script', success:function(request){Element.hide('loader')}, type:'post', url:'/answers/next'}); return false;">Next</a>
在我的控制台中
$('ans')。value给出TypeError:无法读取null
的属性'value'
任何人帮助我获取ajax请求中的单选按钮的值
答案 0 :(得分:3)
在我看来,你正在使用jQuery的 mix 以及Prototype或MooTools。 (见下文了解原因。)
如果是这样,我的第一个建议是停止这样做。选择一个并在整个过程中使用它。
但您的主要问题是您使用不存在的id
("ans"
)查找元素。 id
为ans_ans1
。所以:
$("ans_ans1").value // Prototype / MooTools using raw `value` prop
或
$("ans_ans1").getValue() // Prototype
$("ans_ans1").get('value'); // MooTools
或
jQuery("#ans_ans1").val() // jQuery
为什么我认为你正在使用各种库:
你说过:
$('ans')。value给出TypeError:无法读取null
的属性'value'
使用jQuery没有任何意义。 jQuery的$
函数总是返回非null
。它可能会返回空集,但会返回非null
。如果没有匹配$
的元素(并且在您的示例中没有),则来自Prototype或MooTools的null
将返回id
。
在调用jQuery的ajax
时,您使用的是符号jQuery
,而不是$
,这表明我正在使用jQuery的noConflict
,以便你可以让Prototype或MooTools与它共存(因为那些想要$
)。
答案 1 :(得分:2)
因为看起来你正在使用PrototypeJS和jQuery - Element.show()
:
Prototype的$()
期望它的参数是id
而不是name
的值。所以
$('ans').value
应该是
$('ans_ans1').value
匹配标记中的<input
id="ans_ans1"
...>
。
如果您想通过name
选择,则可以将$$()
与属性选择器一起使用。虽然,它会返回一个集合。
$$('[name="ans"]')[0].value
答案 2 :(得分:0)
尝试
<a href="#" onclick="Element.show('loader'); jQuery.ajax({data:'answer='+$('#ans_ans1').value+'&passed_question=1&'+'&exam_group_id=1&' + '&authenticity_token=' + encodeURIComponent('GGKdjhC39b1Fi5fe52Cq0VcPwpi6laphZblC/5ZOl8o='), dataType:'script', success:function(request){Element.hide('loader')}, type:'post', url:'/answers/next'}); return false;">Next</a>
答案 3 :(得分:0)
将此更改为
$('ans').value
此
$('#ans_ans1').val()
答案 4 :(得分:0)
选择器错误,以及检索值的方法:
修改:
<a href="#" onclick="Element.show('loader'); jQuery.ajax({data:'answer='+$('#ans_ans1').val()+'&passed_question=1&'+'&exam_group_id=1&' + '&authenticity_token=' + encodeURIComponent('GGKdjhC39b1Fi5fe52Cq0VcPwpi6laphZblC/5ZOl8o='), dataType:'script', success:function(request){Element.hide('loader')}, type:'post', url:'/answers/next'}); return false;">Next</a>
答案 5 :(得分:0)
您应该参考此jquery selectors
您可以更改
$('ans').value
到
$("input[value='ans1']" ).val()
或
$('#ans_ans1').val()
答案 6 :(得分:0)
只需使用
$('#ans_ans1')
或
$("input[id='ans_ans1']")
或
$("input[name='ans']")
获取价值
使用val()
像这样$('#ans_ans1').val();
我想你应该研究jquery selectors
上的一些内容