如何使用 Angular.js 的 $http 发送同步请求
How to send Synchronous Requests with $http of Angular.js
嘿伙计们,我知道这个问题 posted 很多,但没有什么对我没有帮助,这就是为什么我问这个 question.Question 我正面临向发送同步请求的问题php。
这是我正在发送请求的模型函数。
State.pushData = function () {
$http({
method: 'POST',
url: 'pushData.php?action=pushdata',
data: {'status': 'push', 'email' : State.campemail},
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
}).success(function(response){
if(response.error){
console.log(response.error);
return;
}
State.getCartData();
State.selectedItems = [],
});
}
此 pushData 函数向定义的 url 发送 post 请求。并获取响应。编写的代码假设在最初发送的请求成功时执行 "State.getCartData()" 函数。但这不是以这种方式工作的。两个请求同时执行。
我曾尝试使用 .post 和 $http 方法,但结果相同。像这样
State.pushData = function () {
$http.post('pushData.php?action=pushdata',
{'status': 'push', 'email' : State.campemail}
).then(function(response){
if(response.error){
console.log(response.error);
return;
}
State.getCartData();
State.selectedItems = [],
});
}
我想异步发送请求,一旦 pushQuote 请求完成,getCartData() 函数就会执行。请分享您的经验。提前致谢。
经过一番集思广益,我的问题得到了答案。我在我的模型中 return $http 并在 returned 响应中调用 .then() 。它起作用了,因为我想在第一次成功完成后发送请求。这是我的模型函数
State.pushData = function () {
return $http.post('pushData.php?action=pushdata',
{'status': 'push', 'email' : State.campemail}
);
}
在上面的函数中,我只是向服务器发送 post 请求,并 return 它对控制器函数的响应。从模型 returning 后立即执行。这是我的控制器功能。
scope.pushIt = function() {
var responseObj = State.pushData();
responseObj.then(
function() { //successs call back
/*Business logic*/
State.getCartData();
State.selectedItems = []
},
function() { //Error call back
/*Business logic*/
}
);
}
这种方法的优点在于您可以根据需要使用任意多的 then 方法。他们都会一个接一个地链式执行。
scope.pushIt = function() {
var responseObj = State.pushData();
responseObj.then(
function() { //successs call back
/*Business logic*/
},
function() { //Error call back
/*Business logic*/
}
).then(
function() { //successs call back
/*Business logic*/
},
function() { //Error call back
/*Business logic*/
}
);
}
嘿伙计们,我知道这个问题 posted 很多,但没有什么对我没有帮助,这就是为什么我问这个 question.Question 我正面临向发送同步请求的问题php。 这是我正在发送请求的模型函数。
State.pushData = function () {
$http({
method: 'POST',
url: 'pushData.php?action=pushdata',
data: {'status': 'push', 'email' : State.campemail},
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
}).success(function(response){
if(response.error){
console.log(response.error);
return;
}
State.getCartData();
State.selectedItems = [],
});
}
此 pushData 函数向定义的 url 发送 post 请求。并获取响应。编写的代码假设在最初发送的请求成功时执行 "State.getCartData()" 函数。但这不是以这种方式工作的。两个请求同时执行。 我曾尝试使用 .post 和 $http 方法,但结果相同。像这样
State.pushData = function () {
$http.post('pushData.php?action=pushdata',
{'status': 'push', 'email' : State.campemail}
).then(function(response){
if(response.error){
console.log(response.error);
return;
}
State.getCartData();
State.selectedItems = [],
});
}
我想异步发送请求,一旦 pushQuote 请求完成,getCartData() 函数就会执行。请分享您的经验。提前致谢。
经过一番集思广益,我的问题得到了答案。我在我的模型中 return $http 并在 returned 响应中调用 .then() 。它起作用了,因为我想在第一次成功完成后发送请求。这是我的模型函数
State.pushData = function () {
return $http.post('pushData.php?action=pushdata',
{'status': 'push', 'email' : State.campemail}
);
}
在上面的函数中,我只是向服务器发送 post 请求,并 return 它对控制器函数的响应。从模型 returning 后立即执行。这是我的控制器功能。
scope.pushIt = function() {
var responseObj = State.pushData();
responseObj.then(
function() { //successs call back
/*Business logic*/
State.getCartData();
State.selectedItems = []
},
function() { //Error call back
/*Business logic*/
}
);
}
这种方法的优点在于您可以根据需要使用任意多的 then 方法。他们都会一个接一个地链式执行。
scope.pushIt = function() {
var responseObj = State.pushData();
responseObj.then(
function() { //successs call back
/*Business logic*/
},
function() { //Error call back
/*Business logic*/
}
).then(
function() { //successs call back
/*Business logic*/
},
function() { //Error call back
/*Business logic*/
}
);
}