3

私はこの問題をかなり前から見てきましたが、 $.ajax 関数が呼び出された後に null を受け取り続ける理由を理解できないようです。メソッド名を含む連想配列を入力し、PHP でメソッドを呼び出してaj son 文字列をフロントエンドに戻します。Java スクリプトでアラートを呼び出すと、null を受け取ります。これが私のコードです

Java スクリプト:

   $(document).ready(function()
   {
     var data = {};
     data["Method"] = "test";
     $.ajax({

            url:"test.php/test",
            data: data,
            type:"POST",
            contentType:"application/json",
            dataType:"json",
            success: function(data){

            alert(data);

            },
            error:function(data, textStatus, error)
            {

            }
     });
});

PHP:

   <?

    //require_once("database.php");

    class methods
    {
      function __contructor()
      {
        if(isset($_POST["Method"]))
        {
              $function = $_POST["Method"];
              call_user_func($function);
        }
        else
        {
              echo "{\"status\":\"false\"}";
        }
     }

      function test()
      {
            $json = array( 
            "kyle" => "broflowksi",
            "eric" => "cartman",
            "stan" => "marsh"
             );
            echo json_encode($json);
      }

   }

     $method = new methods();

   ?>
4

4 に答える 4

3

呼び出そうとしているのはインスタンス メソッドです。次のように呼び出します。

if(isset($_POST["Method"]))
{
      $function = $_POST["Method"];
      $method = new ReflectionMethod('methods', $function);
      $method->invoke($this);
}
于 2012-11-18T09:45:04.593 に答える
0

クラス コンストラクター メソッドにタイプミスがあるだけです。

function __construct()

心に留めておくべきもう 1 つのことは、contentType を json に設定する必要があるかどうかわからないということです。その変数は送信するもののためのものであり、受信するものではありません。したがって、投稿変数が取り除かれている状況になった場合は、ajax 呼び出しから contentType を削除してみてください。

于 2012-11-18T10:00:30.203 に答える
0

出力を送信する前に content-type ヘッダーを強制してみてください。

header("Content-type: application/json");
于 2012-11-18T09:44:48.330 に答える
-1

echointestメソッドを削除してみてください。あなたが呼んでいます

 call_user_func($function);

そしてあなた$functionはそうではありませんreturningechoing、.ie

function test() {
        $json = array( 
        "kyle" => "broflowksi",
        "eric" => "cartman",
        "stan" => "marsh"
         );
        echo json_encode($json);          // This line should be returning
}

以前、php 関数呼び出し (特定の ajax ではありません) を使用して同様の問題を処理しました。

于 2012-11-18T09:37:21.010 に答える