2017-05-11 5 views
0

最近、何かに苦労しています。API呼び出し後にjavascriptでPHP変数を変更する

は私がインスタンス化PHPクラスを持っているその上で
<?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> 

私は応じて変更したい:私は、私はそれを行う方法APIを呼び出すJavaScriptコードのビットを持っており、ここでは、APIの応答に応じて、データベースのデータを収集するよりもありますデータベース上でフェッチされたデータに変換し、そのクラスの変数を前面に出力します。

簡単にするためのクラスは、このようなものであるとしましょう:私は探しています何

class myClass 
{ 
    private $_variable; 

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

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

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

すると、データベースによって値のリターンがフェッチそれに影響を与え、その後の値を表示して$_variableを変更する方法ですディスプレイの$_variable

+0

私が示唆しているのは、クエリ文字列パラメータとして変数(出力から受け取ったAJAX呼び出し)を使用してphpファイルを呼び出し、PHPでこれらを取得することです。 –

答えて

0

PHPの仕組みのためこれはできません。 PHPスクリプトがインタプリタにロードされ、実行されてからアンロードされます。以下の説明は、100%正確ではありませんが、それはあなたがよりよく理解するのに役立つかもしれない:

  • あなたはCallAPI.php
    • CallAPI.phpにAPI呼び出しを行うためにJSを使うには、魔法の可能な出力を返し、んスクリプトはを停止します。
  • はJSはないもう
  • fetchDataFromDB.phpが、それは魔法だし可能な出力を返し、を行い、出力をキャッチし、この時点でfetchDataFromDB.php
    • CallAPI.phpに存在していたすべての値を呼び出しますスクリプトは、を停止します。

それはあなたがコーディングを開始grapsに混乱概念ですが、PHPはsyncroniceある(最初の、そしてB、そしてC、その後行われる)とJavaScriptは非同期(に指定された順序がそれ自体ではないですABC、すぐに発砲するかもしれない、何かが起きるのを待つ、クリックのように)。

あなたの変数名は、(parameter1がすべて記述的ではありません)良いものではありませんように、それは、あなたが望むものを理解することは少し難しいですので、私はあなたにもっと正確な答えを与えることはできません。
あなたが質問で指定した場合、javascriptで値を使用しないと、最初のPHPスクリプトが2番目のPHPスクリプトを直接呼び出すことがあります。ずっと速い。

あなたが説明したような状況で、*理由*のためにjavascriptで結果が必要な場合は、その値をセッション変数またはデータベースに格納できます。

+0

セッション変数を使用して、スクリプト間でデータが保持されるようにすることができます。 – Barmar

+0

変数名はここでは私の心配ではありません。 とにかく私はあなたのポイントを得る、私は他の何かを考えてみましょう。 –

+0

@Barmar:答えに追加しました。 – Martijn

関連する問題