2016-06-09 29 views
6

Ecco il mio codice javascript

$scope.addUser = function() { 
       debugger; 
       url = baseURL + "AddUser"; 
       $scope.objUser = []; 
       $scope.objUser.push({ 
        "ID": '0', 
        "UserName": $scope.txtUserName, 
        "Password": $scope.txtPassword, 
        "Role":"Non-Admin" 
       }); 

       $http.post(url,$scope.objUser[0]) 
        .success(function (data) { 
         debugger; 
         alert("S"); 
         window.location = "../View/Login.html"; 
        }).error(function() { 
         debugger; 
         alert("e"); 

        }); 
      } 

qui è il mio assistente di codice del metodo

[HttpPost] 
     public int AddUser(UserModel user) 
     { 
      //_entity.Configuration.ProxyCreationEnabled = false; 
      tblUser objUser = new tblUser(); 
      objUser.UserName = user.UserName; 
      objUser.Password = user.Password; 
      objUser.Role = user.Role; 
      _entity.tblUsers.Add(objUser); 
      _entity.SaveChanges(); 
       return objUser.ID; 
    } 
+0

Provalo aggiungendo un timeout – tarzanbappa

+0

Hai controllato il metodo del tuo server, restituisce sempre il successo – tarzanbappa

+0

quando eseguo il progetto senza debugger nel browser mostra un messaggio di avviso che ho scritto per errore di ajax.e dopo di ciò getta " Errore HTTP 405.0 - Metodo non consentito ". –

risposta

0

È possibile utilizzare le promesse per ottenere la risposta. questo può essere all'interno di un servizio e chiamarlo quando lo desideri.

this.addUser = function (obj) { 
     var datosRecu = null; 
     var deferred = $q.defer(); 
     var uri = baseUrl + 'addUser'; 
     $http({ 
      url: uri, 
      method: 'post', 
      data: angular.toJson(obj) 
     }).then(function successCallback(response) { 
      datosRecu = response; 
      deferred.resolve(datosRecu); 
     }, function errorCallback(response) { 
      datosRecu = response; 
      deferred.resolve(datosRecu); 
     }); 
     return deferred.promise; 
    }; 

anche .error e .success sono deprecati.

PD: il parametro data: all'interno dello $http corrisponde al corpo. se si desidera inviare i parametri si dovrebbe usare params:{}

EDIT: Qui vi lascio un link come funzionano le promesse. Angular promises Fondamentalmente questo aiuta a elaborare i dati in modo asincrono

l'esempio di cui sopra può essere utilizzato all'interno di un servizio come questo

myApp.service('myService', function($q, $http){ 

// here your services.... 

}); 

il servizio può essere iniettato all'interno di qualsiasi controller di fornire i dati che ciò che si vuole, dentro delle vostre funzioni

myApp.controller('myController', function($scope, myService){ 

    $scope.list = function(){ 
     $promise = myService.getAll(); // this will be the name of your function inside your servive 
     $promise.then(function(data){ 
     console.log(data); //here you can se your promise with data like status and messages from the server. 
     }); 
    }; 

}); 

Spero che sia d'aiuto.

+0

penso che tu abbia ragione. Le promesse possono essere usate qui. Ma io sono nuovo di angularJS quindi non capisco il suo codice. Puoi dare qualsiasi link per capire le promesse in modo migliore? –

+0

Ok, lo aggiungerò –