【问题标题】:error 405 get method not allowed错误 405 不允许获取方法
【发布时间】:2017-06-18 05:01:14
【问题描述】:

Angularjs 代码

 var app = angular.module('myApp', []);
 app.factory('httpSend', ['$http', '$q', function($http, $q) {
     var app = {};
     app.sendToServer = function(data) {
         $http({
             method: "POST",
             url: '/report',
             data: data,
             headers: {
                 'Content-type': 'application/x-www-form.urlencoded;'
             }
         }).then(function(response) {
             debugger
             var result = data;
         });
     }
     app.getfromServer = function() {
         var def = $q.defer();
         $http.get('/report').then(function(data) {
                 console.log(data);
                 def.resolve(data);
             }),
             function(error) {
                 def.reject("Failed to get albums");
             };
         return def.promise;
     }
     return app;
 }]);
 app.controller('myCtrl', ['$scope', '$http', 'httpSend', '$filter', function($scope, $http, httpSend, $filter) {
     $scope.names = ["ankit patidar", "adhishi ahari", "kritin joshi", "kautilya bharadwaj", "punita ojha", "manvi agarwal", "apeksha purohit", "shipra jain", "mansi nangawat", "praveen soni"];
     $scope.data = [];
     $scope.names.forEach(function(name) {
         $scope.data.push({
             name: name,
             checkin: "",
             checkout: ""
         })
     });
     $scope.login = [];
     $scope.check = function(name, doing) {
         debugger
         name[doing] = new Date();
         name[doing] = $filter('date')(name[doing], 'dd-MM-yyyy hh:mm:ss');
         $scope.login.push(angular.copy(name));
         if (doing == "checkout") {
             var q = JSON.stringify($scope.login);
             httpSend.sendToServer(q);
         }
     }
     $scope.getData = function() {
         httpSend.getfromServer();
     }
 }]);

`

Python 代码

 def get(self):
 logging.info('get is triggered')
 obj = CheckIn.query().fetch()
 emp_obj = []
 for x in obj:
     logging.info('I am inside for loop ')
 emp_obj.append({
     'name': x.name,
     'Check_in': x.inDate,
     'check_out': x.outDate
 })
 logging.info('I am inside emp_obj')
 self.response.write(json.dumps(emp_obj))

我需要在前端视图上获取存储在 ndb 数据存储中的所有数据,这就是为什么我使用 http get 方法但错误显示方法不允许的原因。尽管使用了查询获取并在 python 广告触发 get 方法上显示了它的响应,你能帮忙吗,为什么会出现错误,控制流中是否有错误或我的 get 方法中缺少某些东西,因为现在我可以发布和存储数据

【问题讨论】:

  • 不要使用 var app = {};为您的工厂逻辑并将 x-www-form.urlencoded 更改为 json。在您的工厂逻辑中更改 var app 的名称
  • 代替 var app={} 用什么???并更改内容类型,没有任何更改,显示相同的错误
  • 您可以使用任何其他名称。您正在 var app 上加载 Angular 模块。因此,如果您为工厂逻辑使用任何其他变量名称,效果会更好。
  • 谢谢,它帮助我至少向前迈出了一步,出现了一个新错误
  • 太好了,您现在遇到什么错误?顺便说一句 var 结果 = 数据;应改为 var result = response.data;

标签: python angularjs google-app-engine


【解决方案1】:

将您的工厂更改为以下内容。不要使用与为控制器逻辑初始化模块相同的变量应用程序。

app.factory('httpSend',['$http', '$q',function($http, $q){
  return {
    'sendToServer': function(data) {
      var def = $q.defer();
        $http({
            method: "POST",
            url: '/report',
            data: data,
            headers: {
                'Content-Type': 'application/json'
            }
        }).then(function(response) {
            debugger
            var result = response.data;
            def.resolve(result );
        });
          return def.promise;
    },
    'getfromServer': function() {
        var def = $q.defer();
        $http.get('/report').then(function(data) {
                console.log(data);
                def.resolve(data);
            }),
            function(error) {
                def.reject("Failed to get albums");
            };
        return def.promise;
    }
}
        }]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-20
    • 2017-11-13
    • 2016-12-02
    • 2012-10-25
    • 2012-03-21
    • 2015-11-25
    • 1970-01-01
    • 2014-07-16
    相关资源
    最近更新 更多