所以,我在这里看了几个问题和答案,它们似乎都指向了同一个方向,但我无法让它发挥作用。 。 。
我想从JQuery中的文件中读取一个变量,向其中添加一个变量,然后将其传递给php以将新值写入该文件。我有单独的HTML / JavaScript和PHP文件。
在Javascript中,我有:
$(document).ready(function(){
var data
$.get('scoredir/data.txt', function(data) {
count = parseInt(data);
count = count +1;
});
$.ajax({
type: 'POST',
url: 'savedata.php',
data: { 'numberOfPlays' : count },
success: function (response) {
//alert (response);
}
});
});
在php文件(savedata.php)中,我有:
<?php
$data = $_POST['numberOfPlays'];
file_put_contents("scoredir/data.txt", $data);
?>
似乎php文件没有得到变量。谁知道什么是错的?
答案 0 :(得分:0)
您遇到了典型的异步AJAX问题。在$.ajax
命令完成请求之前,您$.get
命令正在运行。
对于快速修复,请尝试这样的事情:
$(document).ready(function(){
var data;
$.get('scoredir/data.txt', function(data) {
count = parseInt(data);
count = count +1;
$.ajax({
type: 'POST',
url: 'savedata.php',
data: { 'numberOfPlays' : count },
success: function (response) {
//alert (response);
}
});
});
});
答案 1 :(得分:0)
我认为ajax的行为是异步的,所以一个人正在完成,而另一个则没有,反之亦然,所以你可以这样做:
$(document).ready(function(){
$.get('scoredir/data.txt', function(data) {
var count = parseInt(data); // you can declare your variable here
count = count + 1;
$.ajax({
type: 'POST',
url: 'savedata.php',
data: { 'numberOfPlays' : count },
success: function (response) {
//alert (response);
}
});
});
});
答案 2 :(得分:0)
我注意到的一件事是,$ .get只是一个简写,它已经是一个异步的ajax调用。因此,为了处理该请求的结果(例如计数),您的第二个ajax调用需要进入$ .get的回调内部,如此:
$(document).ready(function(){
var count;
$.get('http://echo.jsontest.com/key/22', function(data) {
count = parseInt(data.key);
count = count +1;
$.ajax({
type: 'POST',
url: 'savedata.php',
data: { 'numberOfPlays' : count },
success: function (response) {
//alert (response);
}
});
});
});