好的,所以我正在使用Wordpress作为我的后端的Ionic应用程序。与WP API插件一起,我能够创建一个基本身份验证(需要发布到Wordpress DB)。
我的最后一个情况是这个 - > Basic authentication not working for WP API with Ionic/Angular
现在我收到400错误(错误请求),但是当我在Postman中使用键和值(内容,标题和摘录)运行我的端点时,它会被保存到WP DB。
我现在面临的问题是如何让它运行应用程序。所以基本上应用程序的视图只是一个文本区域,用户可以在其中提交问题。
对于内容,标题和摘录,我将所有值设置为1范围。
我的部分HMTL代码:
<!-- <input type="text" placeholder="State your base" ng-model="question">
<input type="text" placeholder="excerpt" ng-model="question"> -->
<textarea class="customTextarea" name="question" id="" cols="30" rows="30"
placeholder="Add Question Here" ng-model="question"></textarea>
<button ng-click="save()">Submit</button>
我的控制器代码的一部分:
.controller('AddQuestionCtrl', function($scope, $http, $base64){
$scope.save = function(){
console.log('SAVE');
var url = 'XXXX/wp-json/wp/v2/posts';
var username = 'xxxx';
var psw = 'xxxx';
$http.post(url, {content: $scope.question, title: $scope.question, excerpt: $scope.question},{
headers:{
'Content-Type' : 'application/x-www-form-urlencoded; charset=UTF-8',
'Authorization' : 'Basic ' + $base64.encode(username + ':' + psw),
'Access-Control-Allow-Origin': '*'
}
}).then(function(response){
$scope.result = response;
console.log('The data has been saved to DB', $scope.result);
},
function (error) {
$scope.test = error;
console.log('error response', $scope.test);
});
}
})
答案 0 :(得分:2)
首先将数据转换为object然后传递给http.post。它正在运作
myobject = {'content': $scope.question, 'title': $scope.question, 'excerpt': $scope.question};
Object.toparams = function ObjecttoParams(obj)
{
var p =[];
for (var key in obj)
{
p.push(key + '=' + encodeURIComponent(obj[key]));
}
return p.join('&');
};
$http({
url: 'YOUR-WP-API-GOES-HERE',
method: "POST",
data: Object.toparams(myobject),
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
})
.success(function (data, status, headers, config)
{
})
.error(function (data, status, headers, config)
{
});
答案 1 :(得分:1)
使用AngularJS,您可以更轻松地完成。
您可以注入$httpParamSerializer
,然后通过$httpParamSerializer(data)
准备您的数据。
所以你的电话应该是这样的:
$http({
url: 'YOUR-WP-API-GOES-HERE',
method: "POST",
data: $httpParamSerializer(myobject),
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
})