繁体   English   中英

在API调用后使用JavaScript更改php变量

[英]changing php variables with javascript after API call

我最近在挣扎。 我有一些JavaScript代码调用API,然后根据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>显示$_variable的值。

由于PHP的工作方式,因此这是不可能的。 PHP脚本被加载到解释器中,被执行,然后被卸载。 以下说明并非100%准确,但可以帮助您更好地理解:

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

开始编码时,这是一个令人困惑的概念,但是PHP是syncronice(首先是A,然后是B,然后是C,然后是完成),而javascript是异步的(没有给ABC的给定命令,有些可能立即触发,有些等待一些事情发生,例如点击)。

理解您想要的内容有点困难,因为您的变量名不好( parameter1根本不是描述性 ),所以我不能给您更准确的答案。
在问题中指定的情况下,如果您不使用javascript中的值,则可能简单的第一个php脚本直接调用了第二个php脚本。 也快很多。

如果您描述的是某种情况,则需要在javascript中获得*原因*的结果,您可以将值存储在会话变量或数据库中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM