API调用后用javascript更改php变量

时间:2017-05-11 08:20:59

标签: javascript php

我最近在挣扎。我有一些调用API的javascript代码,而不是根据API响应收集数据库数据,我就是这样做的:

<?php
    $class = MyClass();
?>

<div id="display"></div>
<span id="foo"></span>

<script type="text/javascript">
var p = document.getElementById("foo");

p.onclick = function() {
    // API Call
    $.post("CallAPI.php", {
        parameter1: someValue,
        parameter2: someOtherValue,
    }).done(function (data) {
        json = JSON.parse(data);
        response = json.node.subNode.field;
        // Database Fetch
        $.post("fetchDataFromDB.php", {
            parameter: response,
        }).done(function (data) {
            // what do I do ?
        });
    });
};
</script>

最重要的是,我有一个实例化的PHP类,我想根据数据库中提取的数据进行修改,然后在前面输出该类的一些变量。

为了简单起见,我们假设课程是这样的:

class myClass
{
    private $_variable;

    public function __construct(){
        $this->_variable = 'init';
    }

    public getVariable(){
        return $this->_variable;
    }

    public setVariable($variable){
        $this->_variable = $variable;
    }
}

我正在寻找的是一种修改$_variable的方法,方法是通过数据库提取影响它返回值,然后在显示$_variable中显示<div>的值。

1 个答案:

答案 0 :(得分:0)

由于PHP的工作方式,这是不可能的。 PHP脚本被加载到解释器中,得到驱动然后卸载。以下解释并非100%准确,但它可能有助于您更好地理解:

  • 您使用JS对CallAPI.php进行API调用
    • CallAPI.php这是神奇的,返回可能的输出, 脚本停止
  • JS捕获输出,并调用fetchDataFromDB.php
    • 此时,CallAPI.php中存在的每个值都不再
    • fetchDataFromDB.php这是神奇的,返回可能的输出, 脚本停止

当你开始编码时,这是一个令人困惑的概念,但是PHP是同步的(首先是A,然后是B,然后是C,然后是C),而javascript是异步的(没有一个给定的订单到ABC,有些可能会正确离开时,有些人会等待一些事情发生,就像点击一样。)

要理解你想要的东西有点困难,因为你的变量名称不好(parameter1根本不是的描述),所以我不能给你一个更精确的回答。
在你在问题中指定的情况下,如果你不使用javascript中的值,简单的可能是第一个php脚本直接调用第二个PHP脚本。也快得多。

如果您有描述的情况,javascript for * reason *需要结果,您可以将值存储在会话变量中,或存储在数据库中。