我有一系列单选按钮。当我选择一个按钮并按提交时,我想要 要做的两件事: 1.应出现复选标记(在标题中使用Jquery脚本完成) 2.一个mysql数据库应该更新用户的分数,这反过来会改变方块的颜色(用正文中的PHP脚本完成)
问题是当存在jquery脚本时,会出现复选标记,但数据库不会更新。但是,当我删除jquery脚本时,数据库会成功更新。他们的jquery脚本阻止了PHP代码的运行,我不知道为什么
JQUERY SCRIPT:
<script type='text/javascript'>
`$(document).ready(function () {`
$('#questionform').on('submit', function(e) {
e.preventDefault();
$.ajax({
url : $(this).attr('action') || window.location.pathname,
type: "POST",
data: $(this).serialize(),
success: function (data) {
if ($('input[name=functions_question]:checked').val() == 2)
{
$("#correctanswermarkwhengotright").fadeIn('slow');
$(".incorrectanswermark").fadeIn('slow');
// I THINK THIS IS WHERE THE PHP CODE NEEDS TO GO TO FIX THE PROBLEM BUT I DON'T KNOW HOW TO INTEGRATE IT
} else {
$("#correctanswermarkwhengotwrong").fadeIn('slow');
$(".incorrectanswermark").fadeIn('slow');
}
},
});
});
});
</script>
PHP SCRIPT:
<?php
$id = $_SESSION['id'];
$ress = $db->query("SELECT 1 FROM answers WHERE user_id=$id AND question_group='Functions'");
if($ress->num_rows==0){
$db->query("INSERT INTO answers VALUES(NULL, $id, 'Functions', 0)");
}
if(isset($_POST['functions_question'])){
$res = $db->query("SELECT score FROM answers WHERE id=$id AND question_group='Functions'");
$data = $res->fetch_array();
if($_POST['functions_question']==$_SESSION['functions_question']){
if($data['score']<2)$db->query("UPDATE answers SET score = score+1 WHERE id=$id AND question_group='Functions'");
}else{
if($data['score']>-2)$db->query("UPDATE answers SET score = score-1 WHERE id=$id AND question_group='Functions'");
}
}
?>
您可以在此处查看此代码:carouseltest.byethost8.com/onanswersubmittest.php 您可以使用用户名:mail@test.com和密码:test
进行登录如果有人可以解释如何将PHP与Jquery集成以便两个操作都能正常工作,我将不胜感激。谢谢!
答案 0 :(得分:1)
您尝试一次测试代码的每个逻辑。这很复杂。您需要逐步测试代码。
1)尝试评论ajax成功处理程序中的所有内容,看看发生了什么(fadein和fadout logic)。
2)尝试测试你的ajax处理程序(.php文件)。注释所有内容都包含此文件并回显$ _SESSION [&#39; functions_question&#39;]和$ _SESSION [&#39; id&#39;]。如果他们返回值,则转到下一步。
3)仅取消注释这段代码
$ress = $db->query("SELECT 1 FROM answers WHERE user_id=$id AND question_group='Functions'");
if($ress->num_rows==0){
$db->query("INSERT INTO answers VALUES(NULL, $id, 'Functions', 0)");
}
如果它有效并返回你需要的东西。它会正确地将数据写入数据库,然后转到下一步。
4)取消注释此代码。
if(isset($_POST['functions_question'])){
$res = $db->query("SELECT score FROM answers WHERE id=$id AND question_group='Functions'");
$data = $res->fetch_array();
if($_POST['functions_question']==$_SESSION['functions_question']){
if($data['score']<2)$db->query("UPDATE answers SET score = score+1 WHERE id=$id AND question_group='Functions'");
}
如果它返回您需要的内容并正确更新数据库表,请转到下一步。
5)取消注释代码的最后一块
else{
if($data['score']>-2)$db->query("UPDATE answers SET score = score-1 WHERE id=$id AND question_group='Functions'");
}
以与测试前一代码相同的方式测试它。
这有助于调试代码。