2016-12-09 5 views
1

Я использую Angular для вызова конечной точки веб-API ASP.NET, которая принимает файл, содержащий записи клиентов, и импортирует их в базу данных. Импорт работает отлично, но мне трудно понять, как отображать результаты импорта для пользователя. Я хотел бы перечислить каждую импортированную запись и показать, была ли она успешной.Угловая обработка возвращаемых данных из Web Api как ошибка

+----------+-----------+---------------+ 
| LastName | FirstName | Import-Status | 
+----------+-----------+---------------+ 
| Smith | Tom  | Success  | 
+----------+-----------+---------------+ 
| Manning | Pam  | Failure  | 
+----------+-----------+---------------+ 
| Jenkins | Alan  | Success  | 
+----------+-----------+---------------+ 
| Zip  | George | Failure  | 
+----------+-----------+---------------+ 

Для этого я возвращающейся коллекции результатов от Web Api ..

... 
List<ImportResults> results = ProcessCustomerFile.ReadFile(uploadedFileName); 
return Request.CreateResponse<IEnumerable<ImportResult>>(HttpStatusCode.OK, results); 

Здесь обработки Угловой функции возврата

$scope.uploadFiles = function() { 

    uploadService.uploadFiles($scope) 
     // then() called when uploadFiles gets back 
     .then(function (data) { 
      // promise fulfilled 
      if (data.length === 0) { 
       alert("File Uploaded and Processed") 
       $scope.formdata = new FormData(); 
       $scope.data = []; 
       $scope.$apply; 
      } else { 
       // There is data being returned so assign to the $scope variable 
       alert("File Uploaded and Processed with returned data"); 
       $scope.resultsCollection; 
       $scope.$apply; 
       alert(data); 
      } 
     }, function (error) { 
      //Server Error 
      $scope.uploading = false; 
      alert("Function error " + error); 
     } 

     ); 
}; 

Проблема, которую я имею заключается в том, что код AngularJS, по-видимому, обрабатывает возвращенные данные как ошибку. Есть четыре записи, которые я импортирую, так как в сообщении есть четыре объекта, которые, как мне кажется, являются данными, которые я хочу. Я просто не уверен, почему он обрабатывается function (error) {}.

Alert displaying data

UPDATE: Добавление кода для uploadService

.factory('uploadService', function ($http, $q) { 
     return { 
      uploadFiles: function ($scope) { 

       var request = { 
        method: 'POST', 
        url: 'http://localhost:4321/api/customerupload', 
        data: $scope.formdata , 
        headers: { 
         'Content-Type': undefined 
        } 
       }; 

       // SEND THE FILES. 
       return $http(request) 
        .then(
        function (response) { 
         if (typeof response.data === 'string') { 
          return response.data; 
         } else { 
          return $q.reject(response.data); 
         } 
        }, 
        function (response) { 
         return $q.reject(response.data); 
        } 
        ); 
      } 

     }; 
    }) 
+0

Может вам пожалуйста, укажите соответствующие части uploadService и определение uploadFiles? спасибо – Tuco

ответ

4

Угловая не обрабатывает его как ошибку. Это только имя входного параметра, которое вы указали, это «ошибка». Он ссылается на фактические данные.

Для того, чтобы получить представление о нем;

В обратном uploadService блок (В передаче файлов) вместо .then попробовать его с .success и .error

.factory('uploadService', function ($http, $q) { 
     return { 
      uploadFiles: function ($scope) { 

       var request = { 
        method: 'POST', 
        url: 'http://localhost:4321/api/customerupload', 
        data: $scope.formdata , 
        headers: { 
         'Content-Type': undefined 
        } 
       }; 

       // SEND THE FILES. 
       return $http(request) 
        .success(function (response) { 
         if (typeof response.data === 'string') { 
          return response.data; 
         } else { 
          return $q.reject(response.data); 
         } 
        }) 
        .error(function (error) { 
         return $q.reject(error); 
        }); 
      } 

     }; 
    }) 

В угловой функции, где служба вызывается

$scope.uploadFiles = function() { 

    uploadService.uploadFiles($scope) 
     // then() called when uploadFiles gets back 
     .success(function (data) { 
      // promise fulfilled 
      if (data.length === 0) { 
       alert("File Uploaded and Processed") 
       $scope.formdata = new FormData(); 
       $scope.data = []; 
       $scope.$apply; 
      } else { 
       // There is data being returned so assign to the $scope variable 
       alert("File Uploaded and Processed with returned data"); 
       $scope.resultsCollection; 
       $scope.$apply; 
       alert(data); 
      } 
     }) 
     .error (function (error) { 
      //Server Error 
      $scope.uploading = false; 
      alert("Function error " + error); 
     }); 
}; 
+0

Отличный ответ. Теперь он работает. Не могу поверить, что это был «успех .. ошибка» vs 'then ..' – webworm

+0

Рад, что это было полезно .. –

Смежные вопросы