回答问答的单选按钮和我的单选按钮是
<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
任何人都可以帮助我获得ajax请求中单选按钮的值。
发布于 2013-10-16 00:56:59
因为看起来你使用的是PrototypeJS和jQuery -- Element.show()
Prototype的$()
期望它的参数是id
的值,而不是name
的值。所以
$('ans').value
应该是
$('ans_ans1').value
若要匹配标记中的<inputid="ans_ans1"...>
,请执行以下操作。
如果希望使用name
进行选择,则可以在属性选择器中使用$$()
。不过,它会返回一个收藏。
$$('[name="ans"]')[0].value
发布于 2013-10-16 00:54:41
在我看来,您使用的是jQuery和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
为什么我认为你使用的是混合库:
对于jQuery来说,这是没有意义的。jQuery的$
函数总是返回非null
。它可能返回一个空集,但它将返回非null
。然而,来自Prototype或MooTools的MooTools将返回null
,如果没有匹配的id
元素(在您的示例中没有)。
ajax
时,您使用的是符号jQuery
,而不是$
,这意味着您使用的是jQuery的noConflict
,这样您就可以拥有原型或与其共存的MooTools (因为他们想要$
)。发布于 2013-10-16 00:48:37
试着
<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>
https://stackoverflow.com/questions/19398835
复制