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