我有这份调查问卷,我正在研究用户获得四种答案的答案。每个答案都分配了一个单选按钮,单选按钮具有数据库表中的值(1-10)。这样,不同的替代品具有不同的值。用户还可以在问题之间来回切换。
在完成八个问题之后,考生将看到一个按钮,它取代了下一个和后一个按钮。当用户单击它时,它应该提交一个AJAX请求并将表单值发送到数据库。
我遇到的问题是单击按钮时表单值没有发送到我的数据库。我已经测试过,表单显示答案,单选按钮有值,所以问题在于SubmitAjax按钮没有发送值。
为什么不起作用?
表格问题:包含答案替代方案和分数值
qid(int), answer(varchar), point(int)
表结果:应使用AJAX函数发送的值
qid(int), point(int)
PHP / AJAX
<html>
<head>
<meta charset="utf-8">
<script src="https://code.jquery.com/jquery-1.11.3.js"></script>
<script type="text/javascript">
function goBack() {
window.history.go(-1);
}
$("#submitAjax").click(function(){
if($('.radiobtn').is(':checked')) {
var radiobtn = $('.radiobtn:checked').val();
var qid = $('#qid').val();
$.ajax(
{
type: "GET",
url: 'login.php',
dataType: "json",
data: "radiobtn="+radiobtn+"&qid="+qid,
success: function (response) {
if(response.status == true){
alert('points added');
}
else{
alert('points not added');
}
}
});
return false;
}
});
</script>
</head>
<body>
<?php
$localhost = "localhost";
$username = "root";
$password = "";
$connect = mysqli_connect($localhost, $username, $password) or die ("Kunde inte koppla");
mysqli_select_db($connect, 'wildfire');
if(count($_GET) > 0){
$answerPoint = intval($_GET['radiobtn']);
$qid = intval($_GET['qid']);
$sql2 = "INSERT INTO result (qid, points) VALUES ($answerPoint, $qid)";
$connect->query($sql2);
$lastid = $connect->insert_id;
if($lastid>0)
echo json_encode(array('status'=>1));
else
echo json_encode(array('status'=>0));
}
$qid = 1;
if(count($_POST) > 0){
$qid = intval($_POST['qid'])+1;
}
?>
<form method="post" action="">
<input type="hidden" name="qid" id="qid" value="<?=$qid?>">
<?php
$sql1 = mysqli_query($connect,"SELECT * FROM question where answer != '' && qid =".intval($qid));
while($row1=mysqli_fetch_assoc($sql1)){
?>
<input type='radio' name='answer1' class="radiobtn" value="<?php echo $row1['Point'];?>">
<?php echo $row1['answer'];?><br>
<?php
}
?>
<?php if ($qid <= 8) { ?>
<button type="button" onclick="history.back();">Tillbaka</button>
<button type="submit">Nästa</button>
<?php } else { ?>
<button id="submitAjax" type="submit">Avsluta provet</button>
<?php } ?>
</form>
<?php
if(count($_GET) > 0){
$answerPoint = intval($_GET['radiobtn']);
$qid = intval($_GET['qid']);
$sql2 = "INSERT INTO result (points,qid) VALUES ($answerPoint, $qid)";
$connect->query($sql2);
$lastid = $connect->insert_id;
if($lastid>0)
echo json_encode(array('status'=>1));
else
echo json_encode(array('status'=>0));
}
?>
</body>
</html>
答案 0 :(得分:1)
$("#submitAjax").click(function(){
该行将逻辑绑定到标题中的按钮。但是,它不在$(document).ready(function(){...})中;或$(function(){...});
这意味着它将在页面的其余部分加载到DOM之前执行,在这种情况下,它将找不到您要绑定的按钮,并且什么都不做。
你应该把你的逻辑包含在准备好的文档中,或者把它放在你身体的尽头,这样你的元素就会在你试图查找它们时存在。