Ajax和jquery没有正确地向php发送数据

时间:2014-02-08 11:49:56

标签: javascript php jquery mysql ajax

我创建了一个使用jquery(ajax)将数据发送到php的基本表单。 PHP应该根据数据将新记录插入到mysql数据库中。这样做的原因是因为我想在不必提交整个表单的情况下对数据库进行插入,然后在以后使用提交操作。似乎jquery工作正常,因为alert()显示了变量的正确输出,但PHP没有插入数据,我没有收到错误。我无法弄清楚为什么这不起作用?我认为这是我的$ post()的问题,因为下面的函数没有执行但我无法查明错误。任何帮助调试这将非常感激。或者,如果有人知道另一种获得相同功能的方法,那也会很棒?谢谢。 (下面的代码现在运行正常。我发现这是一个类型转换错误,我修复了它。希望有人能发现它有用!)

<script type="text/javascript">   
    function submitgrade(){
    alert("In it");
    var classID = $("#classSelect").val();
    var student = $("#studentSelect").val();
    var exam = $("#Exam").val();
    var grade = $("#grade").val();
    alert(classID+" - "+student+" - "+exam+" - "+grade);
    $.post('submitgrade.php',{postclassSelect:classID,poststudentSelect:student,postExam:exam,postgrade:grade}, /*1*/
    function(data){
    $("#grade").html("");
    });
    };            
</script>

       <?php       /*submitgrade.php*/


            $con=mysqli_connect("localhost","root","","studentbase");

            // Check connection
            if (mysqli_connect_errno())
            {
                echo "Failed to connect to MySQL: " . mysqli_connect_error();
            }
            $classID = $_POST['postclassSelect'];
            $studentID = $_POST['poststudentSelect'];
            $examID = $_POST['postExam'];
            $grade = $_POST['postgrade'];

            echo $studentID[0]." examID: ". $examID[0];
            $gradequery = "INSERT INTO grade VALUES(".intval($studentID).", '".$classID."', ".intval($examID).", ".intval($grade).");";


            $result = $con->query($gradequery);
            while($row = $result->fetch_assoc())
            {
                echo "<br /><p>Grade of ". $grade." submitted for exam ". $row['exam_id'] ." in ". $row['class_ID'] ."</p>";
            }
        ?>

3 个答案:

答案 0 :(得分:0)

您是否在html页面中包含此行?

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">

这里再举一个例子,可以帮到你

<script>
$(document).ready(function(){
 $("input").keyup(function(){
   txt=$("input").val();
   $.post("my_page.asp",{suggest:txt},function(result){
     $("span").html(result);
  });
 });
});

但你的代码看起来太正常了!

答案 1 :(得分:0)

我建议您通过在$.post调用中附加错误处理程序来继续调试,您的代码可能会显示如下:

$.post('submitgrade.php', {postclassSelect:classID,poststudentSelect:student,postExam:exam,postgrade:grade})
.done(function(response) {
    // success
}).fail(function(response) {
    // failure
});

您还应该检查:

  • 脚本是否在服务器上运行? ajax可能不适用于file:/// address
  • 从javascript位置到php文件的路径是否正确?
  • 浏览器开发人员工具对启动的请求有何评论?

答案 2 :(得分:0)

我修好了。它实际上只是我的SQL中的语法错误和我的一个数据库列的类型差异错误。 $ grade变量作为字符串传递给PHP。一旦我将所有变量包装在intval()中,它就按预期工作了。盯着代码长,有时你会失明。哈哈。

感谢omnidan关于消毒的提示。这是一个很好的指南,我曾经将它应用到我的应用程序:

http://codex.wordpress.org/Validating_Sanitizing_and_Escaping_User_Data