Php 角度$http$\u POST未获取参数
这是我的问题:我向一个php文件发出了一个带有一些参数的http请求,但是这个php没有很好地获取这些参数,因为php的响应状态是200,这是正常的,但是$\u post没有获取任何内容 以下是http请求: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:
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然后尝试将参数对象属性名称用引号括起来。