我有 2 个 ajax 调用,一个用于插入数据,一个用于获取数据。连同选择和插入功能。 ajax 调用选择的控制台日志为空。但是,当我检查 phpmyadmin 时,正确的值就在那里。 如果我再次开始游戏,将有 1 个值(来自上一个游戏),但实际游戏的分数不存在。直到我重新开始游戏。等等。有谁知道为什么值在我的 sql 中但 ajax 调用说它是空的?
我从中了解到的。通过 ajax 有一个分数,在 php 中它将进入“检查 json”部分,它看到 json 不为空,因此它转到 InsertScore()。 第二个 ajax 已转换,但这次它没有 json,因此它将进入方法“GetScores”。
插入总是发生在选择之前,因此应该可以看到最后的分数,我不明白为什么它不这样做。
Ajax 调用插入:
$.ajax({
type: "POST",
url: "Database.php",
dataType: "json",
data: { json: jsonData }
});
__ajax调用选择:__
$.ajax({
url: "Database.php",
type: "POST",
dataType: "json",
success: function (obj) {
console.log(obj);
stageRef.$("var1").html(obj[0].x);
stageRef.$("var2").html(obj[0].y);
stageRef.$("var3").html(obj[1].z);
stageRef.$("var4").html(obj[1].a);
stageRef.$("var5").html(obj[2].b);
stageRef.$("var6").html(obj[2].c);
}
});
__php 插入:__
function InsertScore($obj) {
$query = "INSERT INTO table (x, y) VALUES('" . $obj['score'] . "','" . $obj['naam'] . "')";
$result = mysql_query($query);
}
__php 选择:__
function GetScores() {
$query = "SELECT * FROM table ORDER BY x DESC LIMIT 3";
$result = mysql_query($query);
$scoresArray = array();
$i = 0;
while ($row = mysql_fetch_assoc($result)) {
$scoresArray[$i]['x'] = $row['x'];
$scoresArray[$i]['y'] = $row['y'];
$i++;
}
echo json_encode($Array);
}
__检查 json:__
if (isset($_POST['json'])) {
$x= json_decode($_POST['json'], true);
InsertScore($x);
} else {
GetX();
}
最佳答案
使 ajax 调用同步:
$.ajax({
type: "POST",
url: "Database.php",
dataType: "json",
data: { json: jsonData },
async: false
});
这样“选择”调用将等待“插入”调用完成。
关于javascript - Ajax调用插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20763293/