<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<select id="education_plan_province_ids" multiple>
<option value="1">1</option>
<option value="2">2</option>
<option value="3" selected="true">3</option>
</select>
<select id="provinces" multiple>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
这个pushData函数向定义的url发送一个post请求。并获取响应。编写的代码假设执行&#34; State.getCartData()&#34;最初发送请求成功的功能。但这不是这样的。两个请求都立即执行。 我曾尝试使用.post的$ http然后方法,但结果相同。像这样
SELECT * INTO tablename
FROM oldtable
WHERE 1 <> 1
我想异步发送请求,一旦pushQuote请求在getCartData()函数执行后完成。请分享您的经验。提前谢谢。
答案 0 :(得分:0)
在一些头脑风暴后得到了我的问题的答案。我在模型中返回$ http并在返回的响应上调用.then()。它起作用,因为我想在第一次成功完成后发送请求。这是我的模型函数
State.pushData = function () {
return $http.post('pushData.php?action=pushdata',
{'status': 'push', 'email' : State.campemail}
);
}
在上面的函数中我只是向服务器发送post请求并将其响应返回给控制器函数。从模型返回后立即执行。这是我的控制器功能。
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*/
}
);
}