У меня есть проект 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?
Вы можете использовать метод 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.