从ajax存储变量

时间:2018-07-19 22:27:38

标签: javascript php jquery ajax

我正在尝试从ajax get请求中存储一个调用PHP脚本的变量。我需要将信息存储在其中的变量以保留在区间函数中。我看到了数据,并且在PHP脚本上调用成功,但是当我返回到包含ajax请求的代码时,该变量未定义。所以我的问题是我该如何将这些数据存储到变量中并确保在离开网页之前保留变量数据?

index.php

// ajax repeated call on home page
<script type="text/javascript">
    var storedVariable0;
    $(document).ready(function() 
    {
        setInterval(function () 
        {
                        // ensure data was retained will be undefined first time through
            document.write(storedVariable0);

            $.ajax({
            url: '/fetchdatabase.php',
            type: 'GET',
            dataType: 'json',
            })
            .done(function(json){
            storedVariable0 = JSON.stringify(json);
            document.write(storedVariable0);
            });

                        // ensure data is retained outside of the scope of the ajax call
            document.write(storedVariable0);
        }, 1000 ); //update every second
    });
</script>

fetchdatabase.php

$sql = "SELECT content FROM messages ORDER BY id DESC LIMIT 1";
$result = mysqli_query($connection, $sql);
if (mysqli_num_rows($result) > 0) 
{
    // output data of each row
    while($row = mysqli_fetch_assoc($result)) 
    {
        echo json_encode($row);
    }
}

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

Ajax默认情况下是异步的。 (同步已弃用)。

通过异步,这意味着您的document.write(storedVariable0)的第三个块很可能会在Ajax done块之前执行。因此,在完成之前,您将变得不确定。

建议执行wau异步操作,并且您需要更改编码方式,并确保在完成后所有对storedVatiable0的访问都已发生。