我最近在挣扎。我有一些调用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>
的值。
答案 0 :(得分:0)
由于PHP的工作方式,这是不可能的。 PHP脚本被加载到解释器中,得到驱动然后卸载。以下解释并非100%准确,但它可能有助于您更好地理解:
CallAPI.php
进行API调用
CallAPI.php
这是神奇的,返回可能的输出, 脚本停止 。fetchDataFromDB.php
CallAPI.php
中存在的每个值都不再 fetchDataFromDB.php
这是神奇的,返回可能的输出, 脚本停止 。当你开始编码时,这是一个令人困惑的概念,但是PHP是同步的(首先是A,然后是B,然后是C,然后是C),而javascript是异步的(没有一个给定的订单到ABC,有些可能会正确离开时,有些人会等待一些事情发生,就像点击一样。)
要理解你想要的东西有点困难,因为你的变量名称不好(parameter1
根本不是的描述),所以我不能给你一个更精确的回答。
在你在问题中指定的情况下,如果你不使用javascript中的值,简单的可能是第一个php脚本直接调用第二个PHP脚本。也快得多。
如果您有描述的情况,javascript for * reason *需要结果,您可以将值存储在会话变量中,或存储在数据库中。