我使用$http
服务时遇到AngularJS 1.2 POST请求问题。
点击一下按钮,我就会触发一个POST请求:
$http.post('my/url').success(function(responseText) {
// Do something
console.log(responseText);
});
我的问题是,如果我在按钮上单击两次并且第一个回调还没有被触发,则只发出一个HTTP请求,但我的回调被触发两次(使用与参数相同的数据)。 / p>
如果我明确地添加了cache:false:
$http.post('my/url', {cache: false}).success(function(responseText) {
// Do something
console.log(responseText);
});
然后按照我的预期发出两个请求。
对我来说这看起来像个错误。为什么有人想要缓存POST请求?此外,AngularJS documentation指定我们必须传递缓存:如果我们要激活GET请求的缓存,则为true。这听起来像是默认处于非活动状态,并且对于POST请求根本不活动(这对我来说很有意义)。
有没有办法在1.2分支上为每个请求一劳永逸地停用缓存?我找不到任何东西。
修改
我误用了$http.post
。第二个参数不是选项映射,而是要发送到服务器的数据。根据文档,此参数是必需的。所以我可以执行这个:
$http.post('my/url', {'anything': 'anything'}).success(function(responseText) {
// Do something
console.log(responseText);
});
它按预期工作。
所以真正的问题是:为什么data
调用必须使$http.post
参数正常工作?我觉得我错过了一些关于HTTP的东西。我已经在网址中拥有了我需要的所有内容(例如company/company_id/employee
),而且我不需要任何其他数据。