试图将变量从JQuery传递给PHP

时间:2014-05-24 17:52:46

标签: php jquery

所以,我在这里看了几个问题和答案,它们似乎都指向了同一个方向,但我无法让它发挥作用。 。 。

我想从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文件没有得到变量。谁知道什么是错的?

3 个答案:

答案 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);
            }
        });
    });
});

另外,请查看deferred objects and promises

答案 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);
              }
            }); 

        });

    });

演示: http://jsfiddle.net/3Pykx/