dongyan6503
dongyan6503
2015-04-22 19:43

使用javascript,mysql和php将记录插入数据库

I have the following js function, which makes an ajax request, but it is not doing it for some reason. I checked alerting url and it displays it as it supposed to be, so all variables are declared.

var request = new XMLHttpRequest();
var url = "ajax_js/q_ajax.php?q="+ques+
                            "&ans="+ans+
                            "&a="+inp[0].value+
                            "&b="+inp[2].value+
                            "&c="+inp[4].value+
                            "&d="+inp[6].value+
                            "&cor="+checked+
                            "&def="+input+
                            "&q_n="+q_name+
                            "&c_id="+c_id;
request.onreadystatechange=function (){
    if(request.readyState==4 && request.status==200){
        alert(request.responseText);
    }
    request.open("GET", url, true);
    request.send();
}

Here is the code from php file.

<?php
require("db_conx.php");
$q = $_GET['q'];
$ans = $_GET['ans'];
$a = $_GET['a'];
$b = $_GET['b'];
$c = $_GET['c'];
$d = $_GET['d'];
$cor = $_GET['cor'];
$def = $_GET['def'];
$q_n = $_GET['q_n'];
$c_id = $_GET['c_id'];


$q = mysqli_escape_string($con, $q);
$ans = mysqli_escape_string($con, $ans);
$a = mysqli_escape_string($con, $a);
$b = mysqli_escape_string($con, $b);
$c = mysqli_escape_string($con, $c);
$d = mysqli_escape_string($con, $d);
$cor = mysqli_escape_string($con, $cor);
$def = mysqli_escape_string($con, $def);
$q_n = mysqli_escape_string($con, $q_n);
$c_id = mysqli_escape_string($con, $c_id);


/* Modify id for the system  */
$query = mysqli_query($con, "INSERT INTO course_quiz (course_id, quiz_name, question, des_answer, ChoiceA,
                                                      ChoiceB, ChoiceC, ChoiceD, correct, def)
                            VALUES ('$c_id', '$q_n', '$q', '$ans', '$a', '$b', '$c', '$d', '$cor', '$def')");
echo('Question has been saved');
/* header('Location: ../instr_home.php'); */

I also have an another ajax call(works perfect) in the same page, which I think the reason of the problem. Variables for XMLHttpRequest are named different as well.

Thank You in advance!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • dongqixian8474 dongqixian8474 6年前

    Just replaced ajax, by Jquery ajax,

    Make sure all the URL variables are initialized before passing through url.

    Change the $_GET method to $_POST in your PHP file.

    Just Copy-Paste the solution.

      <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
      <script type="text/javascript">      
      function ajax()
      {
    
      var urlString ="q="+ques+"&ans="+ans+"&a="+inp[0].value+"&b="+inp[2].value+"&c="+inp[4].value+"&d="+inp[6].value+"&cor="+checked+"&def="+input+"&q_n="+q_name+"&c_id="+c_id;
    
      $.ajax
      ({
      url: "ajax_js/q_ajax.php",
      type : "POST",
      cache : false,
      data : urlString,
      success: function(response)
      {
      alert(response);
      }
      });
    
    
      }
    
      </script>
    

    In your PHP file,

     <?php
     require("db_conx.php");
     $q = $_POST['q'];
     $ans = $_POST['ans'];
     $a = $_POST['a'];
     $b = $_POST['b'];
     $c = $_POST['c'];
     $d = $_POST['d'];
     $cor = $_POST['cor'];
     $def = $_POST['def'];
     $q_n = $_POST['q_n'];
     $c_id = $_POST['c_id'];
    
    
     $q = mysqli_escape_string($con, $q);
     $ans = mysqli_escape_string($con, $ans);
     $a = mysqli_escape_string($con, $a);
     $b = mysqli_escape_string($con, $b);
     $c = mysqli_escape_string($con, $c);
     $d = mysqli_escape_string($con, $d);
     $cor = mysqli_escape_string($con, $cor);
     $def = mysqli_escape_string($con, $def);
     $q_n = mysqli_escape_string($con, $q_n);
     $c_id = mysqli_escape_string($con, $c_id);
    
    
     /* Modify id for the system  */
     $query = mysqli_query($con, "INSERT INTO course_quiz (course_id, quiz_name, question, des_answer, ChoiceA,
                                                           ChoiceB, ChoiceC, ChoiceD, correct, def)
                                 VALUES ('$c_id', '$q_n', '$q', '$ans', '$a', '$b', '$c', '$d', '$cor', '$def')");
     echo('Question has been saved');
     /* header('Location: ../instr_home.php'); */
     ?>
    
    点赞 评论 复制链接分享
  • downloadTemp2014 downloadTemp2014 6年前

    Change you code with this and you find your error

    request.onreadystatechange=function (){
        //if(request.readyState==4 && request.status==200){
            alert(request.responseText);
        //}
    }
    request.open("GET", url, false);
    request.send();

    </div>
    
    点赞 评论 复制链接分享

为你推荐