为什么我的标题中的Jquery阻止我的PHP代码工作?

时间:2015-08-21 02:40:16

标签: php jquery mysql

我有一系列单选按钮。当我选择一个按钮并按提交时,我想要 要做的两件事: 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集成以便两个操作都能正常工作,我将不胜感激。谢谢!

1 个答案:

答案 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'");
    }

以与测试前一代码相同的方式测试它。

这有助于调试代码。