我在创建报告系统时遇到问题。计划是这样的:用户有4个无线电可供选择,然后提交其中一个。第一次提交只在mysql中插入一行,但每次提交后都会插入越来越多的行。这是代码:
profile.php
<form id="myform">
bully<input type="radio" id='radio<?php echo $outid; ?>' name="nein" class='radspam' value="bulinput"> </input><br>
spam<input type="radio" id='radio<?php echo $outid; ?>' name="nein" class='radspam' value="spaminput"> </input><br>
viol<input type="radio" id='radio<?php echo $outid; ?>' name="nein" class='radspam' value="vioinput"> </input><br>
pron<input type="radio" id='radio<?php echo $outid; ?>' name="nein" class='radspam' value="pcont_input"> </input>
</form>
///jquery code
$(".report").click(function(){
var parent=$(this).parent().attr("id");
var split=parent.split("output");
var id=split[1];
loading();
closeloading(); // fadeout loading
$(".torep").fadeIn("fast"); // fadein popup div
$("#backgroundPopup").css("opacity", "0.7"); // css opacity, supports IE7, IE8
$("#backgroundPopup").fadeIn("fast");
$("input:radio[name=nein]").click(function() {
$(".repyes").removeAttr("disabled");
});
$(".repyes").click(function(){
var username="<?php echo $username; ?>";
var valara = $('input:radio[name=nein]:checked').val();
$.ajax({
url:"s/report.php",
data:"username=" + username + "&what=" + valara + "&whatid=" + id,
type:"POST",
success:function(data){
alert(data);
$(this).prop('checked', false);
}
});
});
});
report.php
<?php
include "db.php";
IF (isset($_POST['whatid'])){
$what=$_POST['what'];
$reported=$_POST['username'];
$whatid=$_POST['whatid'];
$sql=mysql_query("INSERT INTO report(reported,what,whatid,date) VALUES ('$reported','$what','$whatid',now())");
if (mysql_affected_rows() == 1){
echo "udje";
}else{
echo mysql_error();
}
}
?>
答案 0 :(得分:1)
将id
移至全局范围。并将click
事件分配给.repyes
之外的$(".report").click()
:
var _id = null;
$(".report").click(function(){
var parent=$(this).parent().attr("id");
var split=parent.split("output");
_id = split[1];
loading();
closeloading(); // fadeout loading
$(".torep").fadeIn("fast"); // fadein popup div
$("#backgroundPopup").css("opacity", "0.7"); // css opacity, supports IE7, IE8
$("#backgroundPopup").fadeIn("fast");
$(".report").click(function() {
$("input:radio[name=nein]").click(function() {
$(".repyes").removeAttr("disabled");
});
});
});
$(".repyes").click(function(){
var username="<?php echo $username; ?>";
var valara = $('input:radio[name=nein]:checked').val();
$.ajax({
url:"s/report.php",
data:"username=" + username + "&what=" + valara + "&whatid=" + _id,
type:"POST",
success:function(data){
alert(data);
$(this).prop('checked', false);
}
});
});
答案 1 :(得分:0)
最有可能的原因是你在事件处理程序中有一个事件处理程序绑定。因此,每次单击报告时,新的单击事件都绑定到.repeyes
$(".report").click(function(){
...
$(".repyes").click(function(){
将第二个绑定移到第一个绑定之外。
<强>更新强>
哦,id问题应该像在Arthur Halma'S answer中一样通过将其移动到全局范围来修复。