1

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

<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: Cannot read property 'value' of null

任何人都可以帮助我获取 ajax 请求中单选按钮的值

4

7 回答 7

3

在我看来,您使用的是 jQuery 和 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: Cannot read property 'value' of null

    这对 jQuery 毫无意义。jQuery 的$函数总是返回非null. 它可能会返回一个集,但它会返回非null. 而如果没有匹配的元素(并且在您的示例中没有),则$来自 Prototype 或 MooTools 将返回。nullid

  2. 调用 jQuery 时ajax,您使用的是符号jQuery,而不是$,这表明您使用的是 jQuery noConflict,以便您可以与 Prototype 或 MooTools 共存(因为那些想要$)。

于 2013-10-16T08:54:41.590 回答
2

由于您似乎正在使用PrototypeJS和 jQuery -- Element.show()

Prototype$()期望它的参数是 aid而 a的值name。所以

$('ans').value

应该

$('ans_ans1').value

匹配标记中的。<inputid="ans_ans1"...>


如果您想选择 by name,可以使用$$()属性选择器。不过,它会返回一个集合。

$$('[name="ans"]')[0].value
于 2013-10-16T08:56:59.257 回答
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>
于 2013-10-16T08:48:37.780 回答
0

将此更改为

$('ans').value

$('#ans_ans1').val()
于 2013-10-16T08:48:49.643 回答
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>
于 2013-10-16T08:50:50.740 回答
0

你应该参考这个jquery 选择器

你可以改变

$('ans').value

进入

$("input[value='ans1']" ).val()

或者

$('#ans_ans1').val()
于 2013-10-16T08:55:35.757 回答
0

只需使用

$('#ans_ans1')

或者

$("input[id='ans_ans1']")

或者

$("input[name='ans']")

像这样使用val()来获取值$('#ans_ans1').val();

我想你应该学习一些关于jquery 选择器的内容

于 2013-10-16T08:57:59.040 回答