我对AngularJS和Laravel 5.2感到沮丧。
我想用:
执行正常的$ http帖子请求APIservice.saveArticle = function ( oArticle, callback )
{
var message = 'Hello World!';
$http({
method: 'POST',
url: sBaseUrl + '/api/dummy/',
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
data: $.param({ 'message' : message })
});
}
如果我现在尝试在邮递员中调用此路由(POST + URL / api / admin),我可以在选项卡标题下看到内容类型是text / html。
所以我编辑了模块配置:
artikelportal.config(
[
'$httpProvider',
function( $httpProvider )
{
$httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';
}
]);
这仍然行不通。我的后端控制器也没有数据:
Route::post('api/dummy',
function ( Request $request )
{
var_dump(json_decode(file_get_contents('php://input'), true)); // NULL
var_dump($_POST); // EMPTY
}
);
我做错了什么?我已经尝试了很多,但我从来没有这样做......有人知道这是什么问题吗?
答案 0 :(得分:2)
Postman是一名休息客户。您需要设置请求标头Content-type:application / x-www-form-urlencoded,以便将带有此标头的请求发送到服务器。如果您未在请求中设置任何标头,Postman会发送默认标头Content-type:text / html。这个例子适用于我的locahost。
测试so.html
<!DOCTYPE html>
<html ng-app="myApp">
<head>
<title>Test Angular POST request</title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js"></script>
<script src="app.js"></script>
</head>
<body ng-controller="testCtrl">
<p>Press button and get response from the server</p>
<button ng-click="callServer()">Call</button>
<p><strong>Response:</strong></p>
<p>{{htmlResponse}}</p>
</body>
</html>
app.js
'use strict'
var appModule = angular.module('myApp',[]).service('testService',['$http',function($http){
this.getResponse = function (){
return $http({
url: "api-post.php",
method: "POST",
data: "p1=first_parameter&p2=second_parameter",
headers: {
"Content-Type": "application/x-www-form-urlencoded"
}
});
}
}]).controller('testCtrl',['$scope','testService',function($scope,testService){
$scope.callServer = function(){
testService.getResponse().then(function(response){
$scope.htmlResponse = response.data;
});
};
}]);
API-post.php中
<?php
echo "This text come from the server. You sent to me this:";
print_r($_POST);
?>
您可以在图片中的Chrome检查器工具中查看请求和响应。 这个例子适用于我当地的环境。 如果客户端和服务器位于不同的域中,则存在安全限制(请参阅CORS)。