用jquery调用ajax后用PHP清空$ _POST

时间:2014-08-06 17:22:42

标签: php jquery ajax

我有一个javascript函数,可以从一些输入字段和复选框中收集数据 我想将该数据发送到PHP文件,然后从数据库返回一些信息 但我在使用PHP获取POST数据时遇到问题所以在这里我只关注这个问题并且不会处理任何数据库。

HTML表单中收集的数据在Javascript对象中返回,我使用JSON.stringify(data)将其转换为Json,然后我得到:

{"motscle":[""],"categories":[1,2,3],"prix":[{"min":0,"max":50},{"min":50,"max":100},{"min":100,"max":200},{"min":200,"max":500},{"min":500,"max":1000},{"min":1000,"max":2000}],"dimensions":{"longueur":"","largeur":"","hauteur":""}}

您可以在http://jsonformatter.curiousconcept.com/上对其进行测试,以查看展开的表单并查看它是否为有效的JSON。所以,问题不在这里我想。

然后我有一个类似于ajax的调用用于测试目的(var theJSON包含上面的JSON字符串):

 $.ajax({                                      
          url: 'post.php',                           
          data: theJSON ,   
          dataType: 'json', 
          error: function(){
               console.log("Error in ajax request");
          },
          success: function(data)          
          {
               console.log("Success of ajax request");
               console.log(data);
          }
     });

我的测试PHP文件post.php就是这样:

<?php
     header('Content-Type: application/json; charset=utf-8');
     echo json_encode($_POST);
?>

ajax调用正常,因为我在js控制台中得到了它:

Success of ajax request
[] 

但是你可以看到我还有一个空数组[]。我本期希望获得PHP应该发送给我的$ _POST内容。

我不知道我错在哪里。为什么我没有在$_POST中获取数据?

1 个答案:

答案 0 :(得分:3)

ajax请求的默认类型是GET,要么更改ajax

$.ajax({                                      
      url: 'post.php',                        
      type : 'POST',
      data: theJSON ,   
      dataType: 'json', 
      error: function(){
           console.log("Error in ajax request");
      },
      success: function(data)          
      {
           console.log("Success of ajax request");
           console.log(data);
      }
 });

或检查GET

echo json_encode($_GET);