2015-04-22 89 views
0

我有以下js函数,它会发出ajax请求,但不会出于某种原因执行此操作。我检查了警报url,它显示它应该是,所以所有变量都被声明。使用javascript,mysql和php插入记录到数据库中

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的变量命名也不同。

谢谢您提前!

+0

你检查控制台?你有没有发现任何JavaScript错误? –

+0

@Nandan是的,我检查和控制台不显示任何错误。 – Yhlas

+0

你是否收到任何回应?只需在php文件中回显(仅回显)一条消息,并检查是否得到回应。 –

回答

0

刚刚更换阿贾克斯,的jQuery阿贾克斯,

确保所有的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'); */ 
?> 
+0

谢谢你的帮助。但它是奇怪的,我jQuery的作品和JavaScript不 – Yhlas

+0

请upvote,如果它的工作,首先只是尝试运行简单的ajax(javascript),并检查你是否得到回应,如果你得到的回应,请从“获取”在这两个文件中都是“POST”,即使这样也行。 –

+0

我尝试过upvote,但是在这里没有足够的声望。我刚来这地方。抱歉。 – Yhlas

0

改变你与此代码,你会发现你的错误

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