$ .ajax({})对PHP文件的发布请求返回空值

时间:2012-11-18 09:33:13

标签: php javascript ajax post

我一直在看这个问题已经有一段时间了,似乎无法弄清楚为什么我在调用$ .ajax函数后继续接收null。我输入一个包含我的方法名称的关联数组,然后调用我的方法在PHP中将aj子串返回到前端。当我在我的java脚本中调用alert时,我收到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 个答案:

答案 0 :(得分:3)

您要调用的是实例方法。这样称呼:

if(isset($_POST["Method"]))
{
      $function = $_POST["Method"];
      $method = new ReflectionMethod('methods', $function);
      $method->invoke($this);
}

答案 1 :(得分:0)

在发送输出之前尝试强制使用内容类型标头,

header("Content-type: application/json");

答案 2 :(得分:0)

你的类构造函数方法中只有一个拼写错误,它应该是

function __construct()

要记住的另一件事是我不确定你应该将contentType设置为json,因为该变量适用于您发送的内容...而不是您正在接收的内容。 因此,如果您最终遇到删除帖子变量的情况,请尝试从ajax调用中删除contentType。

答案 3 :(得分:-1)

尝试删除echo方法中的test。你在打电话

 call_user_func($function);

而您的$function不是returning而是echoing,。i.e

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

我之前使用php函数调用处理类似的问题(特别是在ajax中).to catch。