Firebug使用AJAX显示发布的JSON数据,但PHP表示$ _POST为空

时间:2013-03-13 08:26:26

标签: php ajax json post

我正在尝试完成我的第一次AJAX交换,但是我正在家里伸展。我有一个JSON字符串,我通过AJAX发送到php页面verify.php,但是当我尝试接收这些数据时,$_POST verify.php似乎完全为空,如我verify.php页面上的代码所示:

if (empty($_POST)) {
   echo 'empty';
} else {
   echo 'not-empty';
}

我不知道为什么这是......我的AJAX代码似乎没问题:

$.ajax({
   type: 'POST',
   url: 'serverside/verify.php',
   data: data, // Where data is a javascript obj. which has been JSON.stringify'ied. 
   dataType: "JSON",
   success: function(returned) {
      console.log(returned);
   }                
});

而且当我调试我的JSON字符串时,我正在看到它显示得很好,甚至我的成功回调函数都是将“空”记录到控制台(因为它因为我的if而回显'空'上述声明)。所以交换看起来很好,数据似乎很好,但显然没有到达$_POST超全球。有谁能解释为什么?

1 个答案:

答案 0 :(得分:2)

请检查您是否错过任何一步!

//声明变量

   var jsonObj = {demo: 'this is just a simple json object'}

//让我们转换我们的JSON对象

   var postData = JSON.stringify(jsonObj);

//让我们将字符串化的json放入变量中以便发布

   var postArray = {json:postData};

 $.ajax({
   type: 'POST',
   url: "http://somedomain.local.com/phpfile.php",
   data: postArray,
   success: function(data){
      // Do some action here with the data variable that contains the resulting message
   }
 });

我们需要从字符串中去除斜线以便运输。然后我们只运行json_decode php函数。之后我们可以访问php对象并按照我们的意愿使用它。

  if(isset($_POST["json"])){
    $json = stripslashes($_POST["json"]);
    $output = json_decode($json);

    // Now you can access your php object like so
    // $output[0]->variable-name
  }

希望它会有所帮助!