我想用ajax发布我的表单
我希望radiobuttons这样做(没有提交按钮)
所以点击单选按钮会导致表单提交或发布
我的php页面需要知道点击的单选按钮的名称
我的代码是否正确?因为它不起作用,我不知道为什么?
<div id="Q1">
<form id="Question1" method='post'>
<br />
<P> The sky color is..
</P><img border="0" src="images/wonder.png" width="94" height="134"/><br /><br /><br />
<input type="radio" id="option1" name="answer[1]" value="correct!"/> blue
<br />
<input type="radio" id="option1" name="answer[1]" value="false!"/> red
<br />
<input type="radio" id="option1" name="answer[1]" value="false!"/> green
<br />
<input type="radio" id="option1" name="answer[1]" value="false!"/> white
<br />
<br /> </Form>
<!-- <p id="greatp" style="display: none;"> GREAT !!<br /><br /><br /><br /><br /><br /><br /></p> -->
<img border="0" src="images/welldone3.png" width="230" height="182" id="greatp" style="display: none;"/>
<!-- <p id="sorryp" style="display: none;"> Sorry !!<br /><br /><br /><br /><br /><br /><br /></p> -->
<img border="0" src="images/failed3.png" width="230" height="182" id="sorryp" style="display: none;"/>
<img src="images/false2.png"id="myImage1"style="display: none;"/>
<img src="images/correct2.png"id="myImage2"style="display: none;"/>
<!-- <input type= "submit" onclick="Next1()" value="Next"/> -->
<input type="image" src="images/next.png" name="image" width="80" height="30" onclick="Next1()">
</div>
jquery cod:
<script>
$(document).ready(function(){
$("#option1").click(function() {
var answer= $("#option1").value;
var fff= $("#option1").name;
$.ajax({
type: "POST",
url: "page2.php",
data: fff,
success: function(){
if(answer=='correct!')
{
$('#greatp').show();
$('#myImage2').show();
$('#Question1').hide();
}
else
{
$('#sorryp').show();
$('#myImage1').show();
$('#Question1').hide();
}
}
});
return false;
});
});
</script>
答案 0 :(得分:1)
首先,标签上的ID只能存在于一个标签中,它是唯一的标识符。这将是你的第一个问题,jQuery将使用$("#someId")
抓取它找到的第一个元素。
将其更改为课程,这应该有所帮助。即。 $(".someClass")
或根本不使用类,并执行$("input:radio").click...
对于数据,你非常接近,但我认为这不会很有效,因为你需要将数据作为键/值对发送。您可以使用查询字符串或直接json对象来实现此目的。类似的东西:
var theData = {
name: $(this).attr("name"),
value: $(this).val()
};
$.ajax({
data: theData
...
});
这是你正在寻找的this
。 this
设置为单击任何单选按钮,此时您再次硬编码到ID#option1的第一个单选按钮,这是错误的。
另外,考虑将$.get
和$.post
函数视为比$ .ajax稍微简单一些。它们也更简洁,因此可以减少代码来实现同样的目标。