【问题标题】:Angularjs $http post method request getting cancelAngularjs $http post方法请求被取消
【发布时间】:2019-09-12 08:12:01
【问题描述】:

我正在从 angularjs 应用程序调用 Rest web 服务。大多数时候要求取消。有时第一次通话被取消,有时第二次通话被取消。有时它工作正常。

代码是:

$http({
    method : 'POST',
    url : 'https://hostname:8080/myapp/api/j/save-file',
    data : {fileName: 'abc.txt'}
}).success(function (data) {
    alert("success");
}).error(function (data) {
    alert("failed: ", data);
});

【问题讨论】:

  • 开发者控制台是否有任何错误?
  • @SudhirOjha,不。我没有收到任何错误。
  • @SudhirOjha,感谢您的回复。但我没有使用任何形式。我只是在页面加载时调用

标签: angularjs


【解决方案1】:
$http({
    method : 'POST',
    url : 'http://localhost:8080/myapp/api/j/save-file',
    data : {fileName: 'abc.txt'}
}).success(function (data) {
    alert("success");
}).error(function (data) {
    alert("failed: ", data);
});

删除 https 并放置 HTTP 将解决您的问题。

:-) 确保你已经用完美的路由调用了完美的 API。

:-) 如果您正在调用内部 API,那么您可以/myapp/api/j/save-file

【讨论】:

  • Ravel,在我删除 https 之后,我得到了状态 301 代码。
  • 我没有调用内部 api。我正在调用另一个网络应用服务
  • @AnilJagtap,好的,没问题,当您调用localhost API 时,您无需添加https
  • 我更新了我的问题。我没有给出 localhost,而是给出了 Web 应用程序的主机名。请检查一次好吗?
  • @AnilJagtap,正如我所说,在我的上述评论和回答中,它永远不会与https 一起使用。如果您部署在安全服务器上,那么您可以使用httpsstackoverflow.com/questions/2746047/…stackoverflow.com/questions/19254029/… 如果您想理解这些概念,这些将帮助您理解这些概念。首先,尝试了解它是如何工作的,然后实现这个功能。你一定会做到的。 :-)
【解决方案2】:

如果不了解更多关于发送请求的内容、您将其发送到的网络服务器等信息,我们真的无法对此进行过多诊断。不过,我可以提供以下建议:

  1. HTTP 与 HTTPS 在这里没有任何区别。如果您要发送到明确使用您未使用的协议的网站,您将收到类似 HTTP 404 错误或 301(重定向)状态的信息。
  2. “完美”路线也没有一点意义。当然,如果您尝试访问错误地址的路由,它不会起作用,但您仍然会得到 404(或 500,或其他)。
  3. 是的,您可以使用相对 URL 访问同一服务器上的内容,但您也可以使用完整的绝对 URL。它在这里没有不同,根本没有解释您的请求被取消的原因。

这是一个测试。如果您在 AngularJS 应用程序中注释掉每一个其他“事物”,只留下 app 定义本身,controller 定义,并尝试以这种方式运行它会发生什么?还取消吗?尝试通过将其分解为基本要素来找出它在什么时候取消。

如果仍然取消,那么(尽管我讨厌使用它)jQuery $.post() 请求怎么样,看看它是否是 AngularJS 的特定问题以及你是如何使用它的?在 Firefox、Chrome 和您拥有的任何其他浏览器中是否会发生相同的错误(使用 jQuery AngularJS)?

编辑:

我在 https://jsfiddle.net/cLu04r1t/1/ 上做了一个快速的 JS 摆弄,使用与您使用的相同的 $http 方法。您的代码是否会在这个极简示例中引发相同的错误(如果您将我发送到的 URI 替换为您的示例)?

最后,看看What does status=canceled for a resource mean in Chrome Developer Tools?那些中的任何一个可能是导致您的 AJAX 请求被取消的罪魁祸首吗?

【讨论】:

  • 我没有使用 JQuery。它是前角 js 应用程序,我想调用第三方 Web 服务 url。表示我的另一个 web 应用程序 web 服务 url
  • 对不起,让我澄清一下。我的意思是尝试使用像 jQuery 的 $.post() 这样简单的东西来尝试常规 HTTP 请求,通过基本上消除任何“复杂性”来查看您的浏览器/设置是否存在更普遍的问题。只需通过脚本标签或其他方式将其粘贴在您的页面上即可。如果 jQuery 可以工作,而 AngularJS 不能/不是,那么您就知道 AngularJS 存在一些配置问题。
猜你喜欢
  • 1970-01-01
  • 2014-05-19
  • 2017-08-24
  • 1970-01-01
  • 2016-10-23
  • 2015-08-05
  • 1970-01-01
  • 2023-04-05
  • 2014-02-08
相关资源
最近更新 更多