TypeError:无法读取null的属性“value”

时间:2013-10-16 08:45:27

标签: javascript jquery ajax

用于回答测验的单选按钮和我的单选按钮是

<input id="ans_ans1" name="ans" type="radio" value="ans1">

我的下一个ajax请求是

<a href="#" onclick="Element.show('loader'); jQuery.ajax({data:'answer='+$('ans').value+'&amp;passed_question=1&amp;'+'&amp;exam_group_id=1&amp;' + '&amp;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请求中的单选按钮的值

7 个答案:

答案 0 :(得分:3)

在我看来,你正在使用jQuery的 mix 以及Prototype或MooTools。 (见下文了解原因。)

如果是这样,我的第一个建议是停止这样做。选择一个并在整个过程中使用它。

但您的主要问题是您使用不存在的id"ans")查找元素。 idans_ans1。所以:

$("ans_ans1").value         // Prototype / MooTools using raw `value` prop

$("ans_ans1").getValue()    // Prototype
$("ans_ans1").get('value'); // MooTools

jQuery("#ans_ans1").val()   // jQuery

为什么我认为你正在使用各种库:

  1. 你说过:

      

    $('ans')。value给出TypeError:无法读取null

    的属性'value'

    使用jQuery没有任何意义。 jQuery的$函数总是返回非null。它可能会返回集,但会返回非null。如果没有匹配$的元素(并且在您的示例中没有),则来自Prototype或MooTools的null将返回id

  2. 在调用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+'&amp;passed_question=1&amp;'+'&amp;exam_group_id=1&amp;' + '&amp;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()+'&amp;passed_question=1&amp;'+'&amp;exam_group_id=1&amp;' + '&amp;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

上的一些内容