1

PHPファイルがあります.../datastuff.phpこのページでは、PHPオブジェクトがインスタンス化されています。(クラスは別のファイルに書き込まれます)。

public class MyClass{

        //....
       public function doAfterClick(){
        //.....
       }
}

だからdatastuff.phpで私はします

$MyObject = new MyClass();
 //user specific data is added to $MyObject

ここで、ユーザーがdatastuff.phpのボタンを押したときに、$ MyObject-> doAfterClick()を呼び出します。

AJAXはこの種の問題の一般的な解決策だと思います。しかし、私はこれを行う方法がわかりませんか?別のページで記述されたPHP関数を呼び出したい場合は、AJAXを使用してそのページにデータをPOSTできます。ただし、MyObjectはメソッドを呼び出す必要があるため、このページにとどまりたいと思います。

datastuff.phpにPOSTして戻すと、$ MyObjectは失われませんか?シングルトンまたはグローバルにすると、これは機能しますか?私はこれを調べましたが、これは同様の問題ですが、utは私が探しているものではありません: JQuery ajaxを使用してPHPファイルを呼び出し、処理しますが、同じページに留まります

4

1 に答える 1

3

基本的な考え方は次のとおりです。

# datastuff.php

// This object will be created upon each request
$MyObject = new MyClass();

$action = (array_key_exists('action', $_GET)) ? $_GET['action'] : '';
switch ($action) {
    case 'do_something':
        $response = $MyObject->doAfterClick();
        // Output relevant feedback to the user or redirect them somewhere based on the response

        // This was most likely called via AJAX, so perhaps output JSON data or
        // some other means of communicating the response back to the javascript
        break;

    case 'do_something_else':
        // etc...
        break;

    default:

        // Present the information to the user...

        break;
}

リクエスト$MyObjectごとに作成されます(つまり、最初のページの読み込み時、ボタンがクリックされてAJAXリクエストが発生した後)が、同じデータが与えられていると仮定すると、各リクエストで同じになる可能性があります。ボタンがクリックされた後、「datastuff.php?action = do_something」へのajaxリクエストは、関連するメソッドが呼び出されていることを確認します。

このようなものは機能しますが、それは良いコード設計ではありません。MVC(モデル、ビュー、コントローラー)パターンの調査に時間をかけることをお勧めします。

于 2012-11-30T15:49:03.623 に答える