簡體   English   中英

嘗試將變量從JQuery傳遞給PHP

[英]Trying to pass a variable from JQuery to PHP

因此,我在這里查看了幾個問題和答案,它們似乎都指向同一方向,但我無法使其正常工作。

我想從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文件只是沒有獲取變量。 有人知道怎么了嗎?

您遇到了典型的異步AJAX問題。 $.get命令完成請求之前,您正在運行$.ajax命令。

要快速修復,請嘗試以下類似方法:

$(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);
            }
        });
    });
});

另外,研究延遲的對象和Promise

我認為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);
           }
        }); 
    });
});

我注意到的一件事是,$ .get只是一個簡寫,它已經是一個異步ajax調用。 因此,為了處理該請求的結果(例如count),您的第二個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/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM