尝试通过AJAX发送数字,然后将其添加到我的数据库中

时间:2016-01-10 00:52:09

标签: javascript php ajax database

我有JavaScript代码(jQuery和Ajax),我的AJAX引用的数据库和PHP页面。

我的主要目的是:

  • 我正在尝试建立一个儿童网站(学校/专业项目)来帮助他们学习数学。
  • 他们必须回答一个问题,例如23 + 10,有不同程度的困难等等......但这并不是最重要的问题。
  • 使用PHP将值写入<div>。我的目标是提取它们并将它们插入我的数据库。
  • 我不会在这里写下无用的细节,但他们基本上必须为数学写一个答案。然后将答案发送到我的数据库以用于统计(好答案的百分比等)。所以我使用带有jQuery的AJAX,代码如下:

&#13;
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

$(function(){
            $("#button").on("click", function(){
                $.ajax({
                    url: "myWebsiteName.com/receiveQuestion.php",
                    type: "post",
                    data: {
                        id_question: $("#id_question").html(), resultat_operation: $("#reponse").html()
                    },

                    success: function() {
                        alert('success')
                    },

                    error : function() {
                        alert('error')
                    },
                })

                var num1 = parseInt(document.getElementById("num1").innerHTML, 10);
                var num2 = parseInt(document.getElementById("num2").innerHTML, 10);
                var reponse = parseInt(document.getElementById("reponse").value, 10);
                var signe = document.getElementById("signe").textContent;
              
              ...

(and there's a function verifying the results, etc...)
&#13;
&#13;
&#13;

引用的PHP页面代码在这里:

&#13;
&#13;
<?php
	require('connexion.php');
	require('fonctions.php');

	if(isEnfant()) {
		if(isset($_POST['id_question']) && isset($_POST['result_operation'])) {
			try {
				$id_questionInt = (int) $_POST['id_question'];
				$result_operationInt = (int) $_POST['result_operation'];

				$req = $bdd->prepare('INSERT INTO details (player, id_question_details, result_operation) VALUES (:id_player, :id_question, :resultOpe)');
				$req -> bindValue(':id_player', $_SESSION['login_c']); // login of the children once he is online.
				$req -> bindValue(':id_question', $id_questionInt);
				$req -> bindValue(':resultOpe', $result_operationInt);
		    	$req -> execute();
			}

			catch(PDOException $e) {
				die('Error : ' . $e->getMessage());
			}
		}
	}
?>
&#13;
&#13;
&#13;

我尝试了什么:

  • 投射值,因为这些值显然是通过post方法视为字符串。
  • 显示值,但没有结果......

我知道请求通过邮件成功,但数据只是赢了将自己插入我的数据库。

1 个答案:

答案 0 :(得分:0)

您可能需要使用PDO的类型常量之一绑定值。

$id_questionInt = intval($_POST['id_question']);
$result_operationInt = intval($_POST['result_operation']);
$login_c = $_SESSION['login_c'];

$req = $bdd->prepare('INSERT INTO details (player, id_question_details, result_operation) VALUES (:id_player, :id_question, :resultOpe)');
$req -> bindValue(':id_player', $login_c); // login of the children once he is online.
$req -> bindValue(':id_question', $id_questionInt, PDO::PARAM_INT);
$req -> bindValue(':resultOpe', $result_operationInt, PDO::PARAM_INT);
$req -> execute();