2015-10-17 3 views
0

У меня есть форма в угловом формате, где пользователь вводит различные критерии, которые я затем хочу передать в Web Api и получить результат после запуска запросов. Первоначально я думал об этом как о «Get», но имел проблемы с передачей сложных объектов в Web Api. С некоторыми советами я тогда использовал Post и смог передать критерии, выполняющие запрос в Web Api, но мне не удалось вернуть результат в Angular. Метод Web Api запускается и получает результаты. Но я не вижу результатов в службе данных.Передача и получение сложных объектов из Angularjs в Web Api

Каков наилучший подход, когда критерии запроса представляют собой несколько полей, а некоторые - списки? Я не смог найти хороших примеров.

Вот метод Web API:

[HttpPost] общественные IEnumerable пост ([FromBody] Критерии FrequentPawnerReportCriteria) { вар репо = новый FrequentPawnerReport(); var result = repo.GetReport (критерии); результат возврата; } `

Вот DataService:

function getFrequentPawner(criteria) { 
      return $http.post("/api/FrequentPawner/Post", criteria) 
       .then (getFrequentPawnerComplete) 
       .catch(getFrequentPawnerFailed); 
      function getFrequentPawnerComplete(response) { 
       var x = response 
       return response.data.results; 
      } 
      function getFrequentPawnerFailed(error) { 
       alert("XHR failed for frequent pawner report: " + error.responseText); 
      } 
     } 

А вот код контроллера:

function getTopPawnerResults(criteria) { 

      return DataContext.getFrequentPawner(criteria) 
       .then(
       function (result) { 
        vm.frequentPawnerReport = result.data; 

        return vm.frequentPawnerReport; 
       }); 
     } 
+1

Просьба указать код, из которого вы пытались до сих пор. Пользователи будут гораздо более склонны вам помочь, если вы добавите код для ясности. – buzzsaw

+0

, используя пост или get, не должен основываться на «Первоначально я думал об этом как о« Get », но имел проблемы с передачей сложных объектов в Web Api» –

+1

Действительно непонятно, какова конкретная проблема. Ответ с сервера не должен быть проблемой с получением или отправкой – charlietfl

ответ

0

Просто используйте JSON. Используйте JSON.stringify() для анализа объекта JSON для строки и POST. Аналогичным образом верните строку JSON с сервера и назначьте ее переменной в Angular. Он будет автоматически преобразован в объект JSON.

0

Я думаю, что когда вы делаете свой запрос на отправку, вам нужно иметь функцию обратного вызова, которая будет вызываться при возврате вашего веб-Api. Внутри этой функции обратного вызова вы можете обновить переменные переменной $ scope, которые заставят ваш веб-интерфейс отображать ответ с сервера. Вы можете найти пример того, что я имею в виду здесь: https://docs.angularjs.org/api/ng/service/$http

Суть его: $http({ method: 'POST', url: '/path/to/your/web/api', function(success) { console.log('Successfully executed the api call'); $scope.response = response; // change this to match the data you are expecting from the server response }, function(failure) { console.error('There was an error'); $scope.failure = failure; // change this to match your failure response } );

0

Спасибо за реагирование. Проект представляет собой смесь веб-форм и углов. Я переношу приложение и не заметил, что у этой формы был конфликт, который вызывал сообщение назад и делал его похожим на то, что результат не возвращался. Я принял форму в отдельный проект и смог получить результаты, которые я собирался сделать.

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