PUT и POST Angularjs

0

У меня есть проект Ionic с сервисом RESTful WCF, я хочу иметь возможность вставки и обновления данных. Я уже могу просматривать данные с помощью метода GET, но не могу найти что-либо в Интернете для PUT и POST. Как я смогу это сделать?

Метод GET

$scope.selectedDist=  function() {


                 $http.get("http://192.168.1.113/Service1.svc/GetAllComp")
              .success(function(data) {

              var obj = data;
              var ar = [];
              angular.forEach(obj, function(index, element) {

              angular.forEach(index, function(indexN, elementN) {


                 ar.push({CompID: indexN.CompID, CompName: indexN.CompName});

                  $scope.districts = ar;
              }); 
              });

            })

          .error(function(data) {
              console.log("failure");})    


       };

Способы почты, которые я пытался

# 1

 $scope.insertdata = function() {
       var ar = [{'M1':$scope.M1, 'M2':$scope.M2,'M3':$scope.M3,'M4':$scope.M4,'M5':$scope.M5,'M6':$scope.M6,'M7':$scope.M7,'M8':$scope.M8,'M9':$scope.M9,'M10':$scope.M10,}]


     $http.post("http://192.168.1.113/Service1.svc/GetAllComp", ar)
       .success(function(data)
         {
           console.log("data inserted successfully")
         })
         .error(function(data)
           {
             console.log("Error")
           })

# 2

$scope.insertdata = function() {
       var ar = [{'M1':$scope.M1, 'M2':$scope.M2,'M3':$scope.M3,'M4':$scope.M4,'M5':$scope.M5,'M6':$scope.M6,'M7':$scope.M7,'M8':$scope.M8,'M9':$scope.M9,'M10':$scope.M10,}]

$http ({ 
    url : "localhost:15021/Service1.svc/TruckDetails" , 
    Method :  "POST" , 
    headers :  { 
        'Content-Type' :  'Application / json; charset = utf-8' 
    }, 
    Data :  ar 
})

Также мне нужно было бы использовать метод POST или PUT для моей службы, или я могу использовать методы GET?

  • 0
    пожалуйста, смотрите здесь docs.angularjs.org/api/ng/service/$http#put
  • 0
    Это было первое, на что я смотрел, когда делал пост, и заставлял его работать, когда я тестировал с массивом, но я не могу понять, как использовать его со службой. @sylwester
Теги:
ionic-framework
wcf
ionic

1 ответ

0
Лучший ответ

Вы можете использовать метод get в сочетании с querystring для публикации и размещения данных, но это не то, для чего он был разработан, и его следует избегать по нескольким причинам, таким как безопасность.

Это, как говорится, не так сложно использовать пост и помещать в угловое и в следующем, а наивное обслуживание, вы можете видеть все, что требуется, это передавать ваши данные в вызываемую вами служебную функцию.

.service('MyService', function($http) {

     this.postMethod = function(data) {
         return $http.post('http://my.url', data);
     };

     this.putMethod = function(id, data) {
         return $http.put('http://my.url/' + id, data);
     };
}

Так что в вашем контроллере вы можете вводить и вызывать методы службы с данными $scope которые необходимо сохранить.

Взглянув на ваши попытки, вы, похоже, используете один и тот же URL для получения и публикации: "http://192.168.1.113/Service1.svc/GetAllComp" что на самом деле приводит меня к мысли, что вы не задумывались над реализацией этих методы на вашем сервере. Можете ли вы это подтвердить?

Кроме того, всегда полезно посмотреть коды состояния при попытке отправить запросы, поскольку они предоставляют большую информацию о характере возникающей ошибки. Вы можете исследовать это как на своей консоли, так и на внешней программе, такой как Fiddler.

PS

Уведомление об устаревании Утилиты $ http legacy обещают успех и ошибки, которые устарели. Вместо этого используйте стандартный метод. Если для параметра $ httpProvider.useLegacyPromiseExtensions установлено значение false, то эти методы будут вызывать ошибку $ http/legacy.

  • 0
    Спасибо, ваш ответ очень проницательный! Поэтому я должен создать метод POST & PUT из моего сервиса и назвать его так, как вы показали выше? @skubski
  • 0
    Да, вы должны начать с создания операций PUT и POST на стороне сервера, чтобы иметь возможность вызывать их в клиентском приложении AngularJS. Как только вы почувствуете, что все готово, вы можете протестировать операции с помощью чего-то вроде почтальона, прежде чем внедрять сервис AngularJS, который будет взаимодействовать с ним! @RenaldoGeldenhuis

Ещё вопросы

Сообщество Overcoder
Наверх
Меню