我已经研究了使用angular将数据发布到php的其他选项但是没有取得任何成功。我有一个名为" user"我已登录js并且可以看到它已被填充。我正在做这样的帖子
$http.post("./api/register.php", user, config).then(function(response) {
return response.data;
});
配置对象看起来像
var config = {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
}
我已经回复了一个"你好"在PHP中的字符串,我能够看到,但是当我尝试回应我的一个变量时,我无法做到。现在我的php看起来像
<?php
$postdata = file_get_contents("php://input");
$request = json_decode($postdata);
$email = $request->email;
$pass = $request->firstName;
echo $email;
?>
我有很多角度体验,但只使用java spring。
答案 0 :(得分:2)
您正在混合application/json
和application/x-www-form-urlencoded
的方法。
由于$http
的默认值是以json发送而php正在使用file_get_contents("php://input")
,我建议你只需从请求中删除config
$http.post("./api/register.php", user).then(fun....
答案 1 :(得分:0)
我建议不要更改标题,将其保留为默认值(application / json):
$http({
method : 'POST',
url : '/api/register.php',
data: user
})
.then(
function(res) {
console.log('SUCCESS', res);
},
function(err) {
console.error('ERROR', err);
});
如果您在输入中发送json对象,则此PHP代码必须正常工作:
<?php
$postdata = file_get_contents("php://input");
$request = json_decode($postdata);
$email = $request->email;
$pass = $request->firstName;
echo $email;
或者如何编写普通的最小Slim Framework应用程序:
$app = new \Slim\Slim();
$app->post('/api/register', function () use ($app) {
$body = $app->request->getBody();
var_dump($body);
});
$app->run();
大多数现代框架都具有统一请求处理的强大功能。
当我在php上做简单的api我使用Slim。 here You can see quick start, and make Your own PHP API
答案 2 :(得分:0)
的var_dump($ POSTDATA);从服务器端获取整个数据,您可以查看数据是否会到达服务器端。如果数据不会到达后端,则从前端使用console.log(data) - &gt;检查它是否有json数据。请按照以下approch从前端发送数据。
Angular Code
$http({
method : 'POST/GET',
url : '/api/register.php',
parm: user // this hold an data
})
.then(
function(response) {
console.log(response);
},
function(erroMessage) {
console.error(erroMessage);
});