如何使用$ http的Angular.js发送同步请求

时间:2016-07-22 15:04:32

标签: javascript php angularjs sendasynchronousrequest

嘿伙计们我知道这个问题发布了很多,但没有什么不能帮助我这就是我提出这个问题的原因。问题是我面临向php发送同步请求的问题。 这是我的模型功能,它正在发送请求。

<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()函数执行后完成。请分享您的经验。提前谢谢。

1 个答案:

答案 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*/
   }
 );
}