繁体   English   中英

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

[英]Insert record into database using javascript, mysql, and php

我有以下js函数,该函数发出ajax请求,但由于某种原因未这样做。 我检查了警报URL,它按预期显示它,因此声明了所有变量。

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();
}

这是来自php文件的代码。

<?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'); */

我在同一页面中还有另一个ajax调用(工作完美),我认为是问题的原因。 XMLHttpRequest的变量也被命名为different。

先感谢您!

刚用aquery替换了ajax,

在通过url之前,请确保所有URL变量都已初始化。

在PHP文件中,将$ _GET方法更改为$ _POST。

只需复制粘贴解决方案。

  <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>

在您的PHP文件中,

 <?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'); */
 ?>

以此更改您的代码,您会发现错误

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM