Php 角度$http$\u POST未获取参数

Php 角度$http$\u POST未获取参数,php,angularjs,Php,Angularjs,这是我的问题:我向一个php文件发出了一个带有一些参数的http请求,但是这个php没有很好地获取这些参数,因为php的响应状态是200,这是正常的,但是$\u post没有获取任何内容 以下是http请求: simpafAPI.guardaSimulacao = function(id_col,tipo,cliente,info) { return $http({ method: 'POST', params: { id_col:

这是我的问题:我向一个php文件发出了一个带有一些参数的http请求,但是这个php没有很好地获取这些参数,因为php的响应状态是200,这是正常的,但是$\u post没有获取任何内容

以下是http请求:

simpafAPI.guardaSimulacao = function(id_col,tipo,cliente,info) {
    return $http({
        method: 'POST',
        params: {
            id_col: id_col, 
            tipo: tipo, 
            cliente: cliente, 
            info: info
        },
        url: 'php/guarda-simulacoes.php'
    });
};
以下是php代码:

<?php

$id = $_POST["id"];
$id_col = $_POST["id_col"];
$tipo = $_POST["tipo"];
$cliente = $_POST["cliente"];
$info = $_POST["info"];

date_default_timezone_set("Europe/Lisbon");
$data = date("Y-m-d H:i:s");

require 'connection.php';

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

if($id!=""){
    $sql = "UPDATE `Simulacoes` SET `info`='".$info."' WHERE `id`='".$id."'";
}else{
    $sql = "INSERT INTO `Simulacoes`(`id_col`, `tipo`, `data`, `cliente`, `info`) VALUES ('".$id_col."','".$tipo."','".$data."', '".$cliente."', '".$info."')";
}

if ($conn->query($sql) === TRUE) {
    echo $info;
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

mysqli_close($conn);

?>
我得到的答复如下:

{
  "data": "Error: INSERT INTO `Simulacoes`(`id_col`, `tipo`, `data`, `cliente`, `info`) VALUES ('','','2015-04-10 16:01:06', '', '')<br>Incorrect integer value: '' for column 'id_col' at row 1",
  "status": 200,
  "config": {
    "method": "POST",
    "transformRequest": [
      null
    ],
    "transformResponse": [
      null
    ],
    "params": {
      "id_col": "1",
      "tipo": "Património Reforma",
      "cliente": "Aristides Jacinto",
      "info": {
        "simuladores": [
          {
            "nome": "ii",
            "info": {
              "prazoReforma": 20,
              "empreendimentos": {
                "empreendimentos": [
                  {
                    "id": "1",
                    "nome": "Oporto Place",
                    "localizacao": "Porto",
                    "$$hashKey": "object:73"
                  }
                ],
                "tipologias": {
                  "0": "Loft",
                  "18": "T2",
                  "36": "T3"
                },
                "plantas": {
                  "0": "3.1",
                  "1": "6",
                  "2": "8",
                  "5": "3.2",
                  "11": "2.1",
                  "12": "7",
                  "13": "2.2",
                  "14": "5"
                },
                "pisos": [
                  {
                    "id": "2",
                    "piso": "1",
                    "$$hashKey": "object:89"
                  }
                ]
              },
              "entrada": "20000",
              "duracao": "35",
              "taxa": "5",
              "montante": 82000,
              "prestacao": "414",
              "prestacao_seguros": "440",
              "renda_liquida": "320",
              "resultado": -120,
              "patrimonio": 134367
            },
            "imovel": {
              "empreendimento": {
                "id": "1"
              },
              "tipologia": "Loft",
              "planta": "3.1",
              "piso": "2",
              "info": {
                "condominio": "50",
                "renda": "400  ",
                "preco": "102000  ",
                "id": "1"
              }
            },
            "hide": 1,
            "$$hashKey": "object:33"
          },
          {
            "nome": "pp",
            "info": {
              "prazoReforma": 20,
              "entrega": 1000,
              "entregaProg": 100,
              "periocidade": "12",
              "taxa": 5,
              "resultado": "43816",
              "patrimonio": 43816
            },
            "hide": 1,
            "$$hashKey": "object:34"
          },
          {
            "nome": "sm",
            "info": {
              "prazoReforma": 20,
              "entrega": 100,
              "taxa": "1",
              "resultado": "24000",
              "patrimonio": 24000
            },
            "hide": 1,
            "$$hashKey": "object:35"
          }
        ],
        "montanteTotal": 202183,
        "pensao": "856",
        "idadeActual": "45",
        "idadeReforma": "65",
        "pmII": 120,
        "pmPP": 100,
        "pmSM": 100,
        "pmTotal": 320,
        "calculado": 1,
        "data": "10/04/2015",
        "conselho": {
          "propostas": [
            {
              "titulo": "dsads",
              "text": "sdadSAD",
              "valor": "dsaDS",
              "$$hashKey": "object:109"
            }
          ],
          "observacoes": ""
        }
      }
    },
    "url": "php/guarda-simulacoes.php",
    "headers": {
      "Accept": "application/json, text/plain, */*"
    }
  },
  "statusText": "OK"
}
有人知道为什么会这样吗?注意,我发送的参数很好地到达了php,但是$\u POST方法没有获取任何东西。
谢谢

我以前遇到过这个问题

编辑:我刚刚意识到angular的$http将默认为application/json

最有可能的情况是,您的PHP缺少可交互的内容类型

    return $http({
        method: 'POST',
        params: {
            id_col: id_col, 
            tipo: tipo, 
            cliente: cliente, 
            info: info
        },
        url: 'php/guarda-simulacoes.php',
        contentType: 'application/x-www-form-urlencoded; charset=UTF-8'
   });
这在客户端会更好

至于服务器端。最好是解析你的php://input

parse_str(file_get_contents("php://input"),$post_vars);
这将把所有POST变量输出为$POST_变量

例如,您可以使用$post_vars['id_col'],以使其更容易和更可靠地使用


另外,我建议您在直接创建SQL查询之前清理输入。。它很容易

您可以使用var\u dump$\u POST;在PHP中查看接收到哪些值。一个可能的解决方案可能是在JS'id_col':id_col,'tipo':tipothanks中使用引号来表示您的答案,但我只是尝试了一下,它不起作用。。sorrywell然后尝试将参数对象属性名称用引号括起来。