我在控制器内调用我的$ apartments服务时遇到问题。
$scope.checkout = () => {
$scope.stripe_err = null;
if ($scope.subscription.type === '') {
$scope.stripe_err = 'No subscription selected';
return;
}
Stripe.card.createToken($scope.stripeToken, stripeResponse);
}
let stripeReponse = (status, response) => {
if (status !== 200) {
$scope.stripe_err = status;
return;
} else {
$stripe.checkout(token, response.id)
.then((result) => {
$scope.receipt = result.data.receipt / 100; // Stripe amount is in cents
$scope.totalPrice = '';
$scope.stripeToken = { number: '', cvc: '', exp_month: '', exp_year: '' };
})
.catch(err => console.error(err));
}
$apartments.postApt(token, $scope.userInfo); // The request finishes when my services is outside the .then()
};
但当我用错误的$apartments.postApt(result, $scope.userInfo);
替换参数时
然后我收到此错误PUT http://localhost:7000/landlord-api/units/[object%20Object]?access_token=[object%20Object] 500 (Internal Server Error)
这就是我公寓服务的样子。我不确定它是否是我的服务,因为如果我在$stripe.checkout()
之外调用它,它将被调用。
exports.$apartments = function ($http, $q) {
function postApt (landlord_id, newApt) {
var deferred = $q.defer();
$http.put('/landlord-api/units/' + landlord_id + '?access_token=' + landlord_id, newApt)
.then(function (result) {
return deferred.resolve(result);
})
.catch(err => deferred.reject(err));
return deferred.promise;
return {
postApt: postApt
}
}
更新:我还没有解决它。我注意到的是,如果我将我的$ apartments服务放在.then()
中,请求就会保持待定状态,但如果我把它放在.then()
之外,它就会完成请求并得到相应的响应。
答案 0 :(得分:1)
检查你的landlord_id,查看回复,你发送一个对象:
access_token=[object%20Object]
创建一个console.log的landlord_id,以便获得结构。 一个共同的可能性是它是一个数组。
答案 1 :(得分:0)
试试这样。
exports.$apartments = function ($http, $q) {
function postApt (landlord_id, newApt) {
var deferred = $q.defer();
angular.element(document.getElementById("YOUR_FORM_ID")).scope().getlandlord.then
(function (result)){
return deferred.resolve(result);
}).catch(err => deferred.reject(err));
return deferred.promise;
return {
postApt: postApt
}
}
scope.getlandlord(landlord_id,newApt){
return $http.post('/landlord-api/units/' + landlord_id + '?access_token=' + landlord_id, newApt).then(function(response) {
return response;
});
};
答案 2 :(得分:0)
问题可能存在于此处:
{{1}}
删除第一个.then(),看看你是否得到$ result.data.success逻辑工作在第二个(现在只有).then()