2017-07-27 3 views
-1

Ich bin neu in der AngularJS. Ich benutze AngularJS Version 1.3.15. Wenn ich versuche, eine API mit der PUT-Methode aufzurufen, wird eine OPTIONS-Anfrage generiert. Ich weiß nicht, wo ich Fehler mache. Ich habe so viele Methoden ausprobiert, die in Stockoverflow vorgeschlagen werden, aber ich bekomme immer noch nichts. Bitte helfen Sie mir, dieses Problem zu lösen. Im Folgenden finden Sie meine Screenshots zu Controller, Modellen, HTML-Dateien und Chrome Developer Tool Netzwerkaktivität.

Controllerdatei users.js

'use strict'; 
mmlApp_users.config(['$routeProvider', function($routeProvider){ 
    $routeProvider 
    .when('/users/update/:userId', { 
     templateUrl: 'views/users/update.html', 
     controller: 'update', 
     resolve: { 
     user: function(users, $route){ 
      var userId = $route.current.params.userId 
      return users.getUser(userId); 
     } 
     } 
    }) 
    .otherwise({ 
     redirectTo: '/users/index' 
    }); 
}]); 

Modell-Datei - users.js

'use strict'; 
mmlApp_users.factory('users', ['$http', '$location', '$route', function($http, $location, $route){ 
    var obj = {}; 

    obj.getUser = function(userId){ 
    return $http.get(serviceBase + 'users/view/'+userId); 
    }; 

    obj.updateUser = function(user){ 
    var config = { 
      headers: { 
      'Content-Type': 'application/json' 
      } 
     }; 
    var userParams = { 
     first_name: user.first_name, 
     last_name: user.last_name, 
     email: user.email, 
     password: user.password, 
     address: user.address, 
     state: user.state, 
     city: user.city, 
     zip_code: user.zip_code 
     }; 
    $http.put(serviceBase + 'users/update/'+user.id+'?access-token=8e0bb9b3-b35f-4d30-943d-6028c0b85c13', userParams, config) 
      .then(successHandler).catch(errorHandler); 

    function successHandler(){ 
     $location.path('/users/index'); 
    } 
    function errorHandler(){ 
     alert('Oops! Somthing went wrong.'); 
     //$location.path('/users/create'); 
    } 
    }; 

    return obj; 
}]); 

Views - update.html

<div> 
    <h1>{{title}}</h1> 
    <p>{{ message}}</p> 
    <form role="form" name="myForm"> 
    <div class="row"> 
     <div class= "form-group col-md-6" ng-class="{error: myForm.first_name.$invalid}"> 
     <label> First Name: </label> 
     <div> 
      <input name="first_name" ng-model="user.first_name" type= "text" class= "form-control" placeholder="First Name" required/> 
      <span ng-show="myForm.first_name.$dirty && myForm.first_name.$invalid" class="help-inline">First Name Required</span> 
     </div> 
     </div> 
     <div class= "form-group col-md-6" ng-class="{error: myForm.last_name.$invalid}"> 
     <label> Last Name: </label> 
     <div> 
      <input name="last_name" ng-model="user.last_name" type= "text" class= "form-control" placeholder="Last Name" required/> 
      <span ng-show="myForm.last_name.$dirty && myForm.last_name.$invalid" class="help-inline">Last Name Required</span> 
     </div> 
     </div> 
    </div> 
    .... 
    .... 
    .... 

    <a href="#/users/index" class="btn btn-default">Cancel</a> 
    <button ng-click="updateUser(user);" ng-disabled="myForm.$invalid" type="submit" class="btn btn-default">Submit</button> 
    </form> 
</div> 

In Chrom Entwickler-Tool Netzwerk-Aktivität Screenshot - enter image description here

+0

Das Senden einer Anfrage CORS nur ein Teil ist. Beheben Sie den Server so, dass er ordnungsgemäß behandelt wird. –

+0

Darf ich wissen, warum diese Frage abgelehnt wird? Wenn etwas nicht stimmt, sag mir bitte, dass ich versuche, es das nächste Mal zu korrigieren. –

+0

Mangel an Forschung. Nichts in Ihrer Frage scheint darauf hinzuweisen, dass Sie überhaupt wissen, was CORS ist. –

Antwort

-1

versuchen in Ihrem Werk:

(function() { 
'use strict'; 
mmlApp_users.factory('users', ['$http', '$location', '$route','$httpParamSerializer', 
function ($http, $location, $route, $httpParamSerializer) { 

    var obj = {}; 

    obj.getUser = function (userId) { 
     return $http.get(serviceBase + 'users/view/' + userId); 
    }; 

    obj.updateUser = function (user) { 

     var userParams = { 
      first_name: user.first_name, 
      last_name: user.last_name, 
      email: user.email, 
      password: user.password, 
      address: user.address, 
      state: user.state, 
      city: user.city, 
      zip_code: user.zip_code 
     }; 

     var req = { 
      method: 'PUT', 
      url: serviceBase + 'users/update/' + user.id + '?access-token=8e0bb9b3-b35f-4d30-943d-6028c0b85c13', 
      headers: { 
       'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' 
      }, 
      data: $httpParamSerializer(userParams) 
     }; 

     $http(req) 
      .then(successHandler) 
      .catch(errorHandler); 

     function successHandler() { 
      $location.path('/users/index'); 
     } 

     function errorHandler() { 
      alert('Oops! Somthing went wrong.'); 
      //$location.path('/users/create'); 
     } 
    }; 

    return obj; 

}]); 

})(); 

Und Goog Sperre :)

Verwandte Themen