我试图构建一个程序,但是每次单击按钮后都遇到将数据存储到数组中的问题。每次单击后,我将通过ajax将一些数据发送到php页面,我想将所有发送的数据存储在数组中,并在以后以表格格式显示它们。
我已经在控制台中通过inspect元素进行了检查,出现的问题是它总是将数组中的旧值覆盖为新值。我找不到我错了。如果有人请帮助我会很有帮助。
$(document).ready(function() {
$("#feed_btn").hide();
$("#finish_btn").hide();
$("#start_btn").click(function() {
$("#start_btn").hide();
$("#feed_btn").show();
});
});
var i = 0;
function PerformGame() {
i++;
$.ajax({
url: 'perform_game.php',
type: "POST",
data: {
'button_clicked': i
},
dataType: 'json',
success: function(data) {
alert(data);
}
});
}
.game-body {
background-color: AED264;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form name="farm_game" method="POST">
<button type="button" name="start_btn" id="start_btn">Start Game !</button>
<button type="button" name="feed_btn" id="feed_btn" onclick="PerformGame();">Let's Feed Now</button>
<button type="button" name="finish_btn" id="finish_btn">Finish Game !</button>
</form>
<?php
$no_of_times_button_clicked = $_POST['button_clicked'];
$animal_person_array = array(Farmer,Cow1,Cow2,Bunny1,Bunny2,Bunny3,Bunny4);
$a = $animal_person_array[array_rand($animal_person_array,1)];
$final_result_array[] = array($no_of_times_button_clicked => $a);
echo json_encode($final_result_array);
?>
答案 0 :(得分:4)
这不起作用,因为每次您进行AJAX调用时,您都会启动一个新的PHP脚本实例,该实例不知道其他调用。
您有两种选择:
对于您的情况,我建议您使用server session。
以下是具有基本会话处理的示例代码(未经测试):
<?php
session_start();
if ($_POST['start_game'] !== null)
{
$_SESSION['final_result_array'] = [];
die();
}
$final_result_array = isset($_SESSION['final_result_array'])
? $_SESSION['final_result_array']
: [];
$no_of_times_button_clicked = $_POST['button_clicked'];
$animal_person_array = array("Farmer","Cow1","Cow2","Bunny1","Bunny2","Bunny3","Bunny4");
$a = $animal_person_array[array_rand($animal_person_array,1)];
$final_result_array[] = array($no_of_times_button_clicked => $a);
echo json_encode($final_result_array);
$_SESSION['final_result_array'] = $final_result_array;
?>
重要:您需要在每次游戏开始时重新初始化数组,否则它将不断添加数组。为此,只需在点击start_game = true
按钮时使用参数start_game
调用脚本即可。