jQuery $ ..post``失败'''失败和淘汰更新后失败



使用$.post更新此APIPOST方法之前,可以成功处理fail(从API调用中返回带有401 Status CodeHTTPResponseMessage)(failurealways在APIPOST方法中未定义)。

  self.modelIsValid = ko.observable(true);
  self.modelErrors = ko.observableArray();
  self.apiPost = function (uri, data, success, failure, always) {
        self.isLoading(true);
        self.modelIsValid(true);
        $.post(rootPath + uri, data)
            .done(success)
            .fail(function (result) {
                if (failure == null) {
                    if (result.status != 400)
                        self.modelErrors([result.status + ':' +
                          result.statusText + ' - ' + result.responseText]);
                    else
                        self.modelErrors(JSON.parse(result.responseText));
                  self.modelIsValid(false);
                }
                else
                    failure(result);
            })
            .always(function () {
                if (always == null)
                    self.isLoading(false);
                else
                    always();
            });
    };

踏入代码时,fail代码块被击中,然后在返回fail代码块和内部if之前运行数十个jQuery,javaScript,敲除和VM扩展代码,然后更新modelErrors阵列,然后设置设置。 modelIsValid to false。

更新fail块后,然后运行另一个代码,但它永远不会返回到fail代码块。阵列永远不会更新,并且modelIsValid永远不会设置为false(valivationError部分视图是由modelIsValid触发的,为false)。

原始版本:jQuery -1.9.1和淘汰2.2.1。

更新版本:jquery -3.1.1和Quintout -3.4.2。

在Widnows 7 Ultimate,VS2015和Last Chrome上运行。在开发人员工具中调试JavaScript。

在打破fail的jQuery或淘汰赛中发生了变化。我将如何重写解决问题?

事实证明,它与jQuery或淘汰无关。我正在使用已更新的jQuery和淘汰的项目使用IS ISSIDE 2.0,该项目合并OWIN,将其重定向到401上的登录页面。

请参阅未经授权的WebAPI调用返回登录页面,而不是401

我使用了Cuong Le的答案,发布了6/11/15。WebAPI调用现在返回没有重定向的401。

最新更新