ajax post后,file_get_contents(" php:// input")为空

时间:2017-12-27 14:09:39

标签: javascript php jquery angularjs ajax

我很犹豫要问,但我还没找到任何解决办法。在ajax函数的php文件中发送数据后,当我尝试捕获php文件中的数据时,数据丢失了。但是,yester我做了一个类似的功能,没有问题。 这是ajax部分:

$http({  
          url: 'PDO/Companion.php',
          data: {
              Companion : Companion,
              Companion : statut
          },
          method: 'POST',
          headers : {'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8'}


      }).then(function (response) {// on success
          $scope.name=undefined;
          $http.get('js/controller/upPartenaire.php').success(function(data) {
              $scope.result = data;
              console.log(data);
          }), function(msg){
              console.log("ça")
              alert(msg);
          };

和php部分:

$postdata = file_get_contents("php://input");
$request = json_decode($postdata);
echo json_encode($request);

在我的项目中,我只使用PHP作为ajax部分进行SQL查询我也用$ _POST来捕获数据但没有

3 个答案:

答案 0 :(得分:0)

您需要将内容类型设置为json并使JSON字符串化为

$http({  
      url: 'PDO/Companion.php',
      data: JSON.stringify({
          Companion : Companion,
          Companion : statut
      }),
      method: 'POST',
      headers : {'Content-Type':'application/json; charset=utf-8'}


  }).then(function (response) {// on success
      $scope.name=undefined;
      $http.get('js/controller/upPartenaire.php').success(function(data) {
          $scope.result = data;
          console.log(data);
      }), function(msg){
          console.log("ça")
          alert(msg);
      };

答案 1 :(得分:0)

这应该对你有所帮助。考虑更改PHP代码:

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

parse_str(file_get_contents('php://input', false , null, -1 , 
$_SERVER['CONTENT_LENGTH'] ), $postdata);

echo json_encode($postdata);

答案 2 :(得分:0)

我之前有同样的问题 我的解决方案 我已将数据转换为urlencoded格式并传入post请求。

url = Object.keys(data).map(function(k) {
    return encodeURIComponent(k) + '=' + encodeURIComponent(data[k])
}).join('&')