gpt4 book ai didi

javascript - AJAX insert in MySQL delay - 非插入

转载 作者:行者123 更新时间:2023-11-29 02:55:32 25 4
gpt4 key购买 nike

我正在编写一种泳池应用程序 -我有大约 50 个 div - 显示 1 个,隐藏 49 个。在每个 div 中都有一个带有单选按钮的表单,在用户单击单选按钮后,JS 调用 AJAX - PHP 请求并将答案插入 MySQL。成功后显示下一个div等等...

一切正常,直到我回答得更快 - 大约 3 个问题/秒。

然后一些答案停止存储。例如答案 1、2、4、6、7、10 被存储。 3,5,8,9 不见了...

我该如何避免呢?保持答案的一致性非常重要。

这是我的JS

$('input[type=radio]').click(function () {

$.ajax({
url: 'assets/ajax/save_answer.php',
data: {action: 'save_answer', question: currentQuestion, answer: $('input[name=answer-' + currentQuestion + ']:checked').val(), answer_pattern: 'agree-disagree', seconds: currentTime},
type: 'post',
dataType: 'json',
success: function (output) {
if (output.success) {

$('.loading img').css("display", "none");


$('#' + currentQuestion).remove();
currentQuestion += currentQuestion;
$('#' + currentQuestion).show();


} else {

alert("Answer wasn't stored");
$('.loading img').css("display", "none");
}
},
error: function () {

alert("Answer wasn't stored");
$('.loading img').css("display", "none");
}

});

PHP 函数

if (isset($_POST['action']) && $_POST['action'] == "save_answer") {

$resp = new stdClass();


$config = HTMLPurifier_Config::createDefault();
$purifier = new HTMLPurifier($config);


$user = $purifier->purify($_SESSION['user_id']);
$projekt = $purifier->purify($_SESSION['projekt_id']);
$otazka = $purifier->purify($_POST['question']);
$odpoved = $purifier->purify($_POST['answer']);
$answer_pattern = $purifier->purify($_POST['answer_pattern']);
$seconds = $purifier->purify($_POST['seconds']);

if(check_answer($answer_pattern, $odpoved)){

$stmt = $db->prepare("SELECT * FROM odpovedi WHERE uzivatel = :uzivatel AND projekt = :projekt AND otazka = :otazka");
$stmt->bindParam(':uzivatel', $user);
$stmt->bindParam(':projekt', $projekt);
$stmt->bindParam(':otazka', $otazka);
$stmt->execute();
$answers_count = count($stmt->fetchAll());

if ($answers_count != 1) {
$stmt = $db->prepare("INSERT INTO odpovedi (uzivatel, projekt, otazka, odpoved, seconds) VALUES (:uzivatel, :projekt, :otazka, :odpoved, :seconds) ");
$stmt->bindParam(':uzivatel', $user);
$stmt->bindParam(':projekt', $projekt);
$stmt->bindParam(':otazka', $otazka);
$stmt->bindParam(':odpoved', $odpoved);
$stmt->bindParam(':seconds', $seconds);

$stmt->execute();

$stmt = $db->prepare("SELECT * FROM odpovedi WHERE uzivatel = :uzivatel AND projekt = :projekt AND otazka = :otazka");
$stmt->bindParam(':uzivatel', $user);
$stmt->bindParam(':projekt', $projekt);
$stmt->bindParam(':otazka', $otazka);
$stmt->execute();
$answer_inserted = count($stmt->fetchAll());

if ($answer_inserted < 1) {
$resp->success = false;
} else {
$resp->success = true;
}
}else{
$resp->success = true;
}



}else{
$resp->success = false;
}

打印 json_encode($resp);

至少应该显示警报,对吗?但它不是...谢谢,

托马斯

最佳答案

将您的警报更改为

alert('Answer wasn\'t stored');

或者,

alert("Answer wasn't stored");

关于javascript - AJAX insert in MySQL delay - 非插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31087159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com