【问题标题】:Handle 304 from my WS - promise response is undefined从我的 WS 处理 304 - 承诺响应未定义
【发布时间】:2015-06-02 12:46:11
【问题描述】:

信息:使用 AngularJS v1.3.15

编辑:这个问题似乎与如何处理 304 响应更相关 来自我的网络服务器而不是 ng-file-upload。我改标题

我正在尝试管理来自我的网络服务器的 304 回调,但我遇到了以下问题:

TypeError: Cannot read property 'data' of undefined
    at ng-file-upload.js:79
    at angular.min.js:112
    at n.$get.n.$eval (angular.min.js:126)
    at n.$get.n.$digest (angular.min.js:123)
    at n.$get.n.$apply (angular.min.js:126)
    at l (angular.min.js:81)
    at M (angular.min.js:85)
    at XMLHttpRequest.F.onload (angular.min.js:86)

ng-file-upload.js 的第 79 行如下:

promise.success = function (fn) {
    promise.then(function (response) {
       console.log(response,config); // HERE RESPONSE IS UNDEFINED
        fn(response.data, response.status, response.headers, config);
    });
    return promise;
};

我要上传的代码如下: 当我的 WebService 发送 200 响应时,此代码运行良好。

       Upload.upload({
            url: $localStorage.endPointVersion + "sky/!/avatar",
            fields: {},
            file: file
        }).progress(function (evt) {
            var progressPercentage = parseInt(100.0 * evt.loaded / evt.total);
            console.log('progress: ' + progressPercentage + '% ' + evt.config.file.name);
        }).success(function (data, status, headers, config) {
            console.log('file ' + config.file.name + 'uploaded. Response: ', data);
        }).error(function (data, status, headers, config) {
          console.log('error ' + config.file.name + 'uploaded. Response: ' + data);
        });

当 webServer 上已经存在文件时,我的 webservices 会发送 304 响应。

到目前为止,我已经开发了一些拦截器,看到304确实被处理成了responseError。

$httpProvider.interceptors.push(['$location', '$injector', '$q', function($location, $injector, $q) {
                         return {
                            'responseError': function(rejection) {
                                 $log = $log || $injector.get('$log');

                                  if (rejection.status === 304) {
                                     // I have tried to reject it to go into error of upload, without success
                                     return $q.reject(rejection);

                                 }
                             }
                         };
                     }]);

第一个问题:这个响应码正常吗?正确的 ?如果不是,那么处理“未更改/未修改”POST 的适当响应应该是什么?将 Web 服务器上的 304 响应更改为另一个响应是可能的,但会产生巨大的影响。如果可能的话,我想防止更改它并正确管理 webapp 304 响应 第二个问题(也是主要问题):我应该如何管理来自我的网络服务器的 304 响应?

我已经看到了这一点: $http returns error when response is 304 (Not Modified) in angularjs 表示角度有效状态为 return 200 <= status && status < 300;

【问题讨论】:

    标签: javascript angularjs http-status-code-304


    【解决方案1】:

    我最终更改了我的后端响应以不同方式处理代码状态。

    这个问题已经解决了。

    【讨论】:

      猜你喜欢
      • 2021-04-10
      • 1970-01-01
      • 2015-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-22
      • 2015-05-19
      相关资源
      最近更新 更多