当没有数据传递时,AngularJS 1.2 $ http似乎缓存POST请求

时间:2014-04-24 16:26:30

标签: javascript angularjs caching angularjs-http

我使用$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),而且我不需要任何其他数据。

0 个答案:

没有答案