【问题标题】:Angular rest web2py角休息web2py
【发布时间】:2017-08-27 22:56:27
【问题描述】:

我无法将我的服务器 web2py restful 与 angular Ajax 连接起来, 但是如果我在浏览器中设置 url 就可以了,但是我不能使用 angular ajax =(

Angular 的链接

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.16/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.16/angular-route.min.js"></script>

我的服务器 web2py(控制器)中的 Mi 代码

@request.restful()
def api(): 
    response["Access-Control-Allow-Origin"] = "*"
    response["Access-Control-Allow-Methods"] = "POST, GET, OPTIONS"
    response["Access-Control-Max-Age"] = "1000"
    response["Access-Control-Allow-Headers"] = "*"
    response.view = 'generic.json'
    def GET():
            print "asdasds"
            return dict(content="JAJAJAJAJA")

    return dict(GET=GET)

和 mi AJax 的角度 url= 地址:port/nameProject/controller/action

  app.controller('controlVentas',  function( $http) {
  var app = this; 
  app.CargarLlave=function(){ 
       var respuesta=$http.get("http://127.0.0.1:8000/Hoteles/ControlMSR/api");
       respuesta.success(function(data){ 
                   alert( "OK"); 
              });
       respuesta.error(function(data, status, headers, config){
                  alert( "NOOOOO"); 
           });  
  } 
});

角度误差

XMLHttpRequest cannot load http://127.0.0.1:8000/Hoteles/ControlMSR/api. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:57734' is therefore not allowed access.

【问题讨论】:

  • 它是$http.get,而不是$http.GET。是的,大小写在这里很重要,这是有角度的get() 函数,而不是正在调用的服务器上的GET 方法。此外,您没有在控制器注入中提供$http。试试app.controller('controlVentas', ['$scope', '$http', function($scope, $http) {
  • 现在进化mi问题,一秒更新
  • 在 mi 控制器中被调用,方法和它的工作,被激活但没有响应。 O.o
  • 你需要有 CORS。 127.0.0.1:8000127.0.0.1:57734 不是同一个站点。例如,试试stackoverflow.com/questions/34621368/…

标签: javascript angularjs ajax rest web2py


【解决方案1】:

设置响应头的正确方法是通过response.headers,而不是直接在response 对象上。例如:

response.headers["Access-Control-Allow-Origin"] = "*"

【讨论】:

    【解决方案2】:

    这是我的最终代码,谢谢大家 =)

    mi Web2Py 中的代码

    @request.restful()
    def api():
        response.view = 'generic.json'
        response.headers["Access-Control-Allow-Origin"] = '*'
        response.headers['Access-Control-Max-Age'] = 86400
        response.headers['Access-Control-Allow-Headers'] = '*'
        response.headers['Access-Control-Allow-Methods'] = '*'
        response.headers['Access-Control-Allow-Credentials'] = 'true'
    
        def GET():
             names = ['1dddedede', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
             return dict(person=names)
    
        return locals()
    

    Angular 中的代码

    app.controller('controlVentas',  function( $http) {
      var app = this; 
      app.CargarLlave=function(){ 
           var respuesta=$http.get("http://127.0.0.1:8000/Hoteles/ControlMSR/api");
           respuesta.success(function(data){ 
                       alert( "OK"); 
                  });
           respuesta.error(function(data, status, headers, config){
                      alert( "NOOOOO"); 
               });  
      } 
    });    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-01
      • 1970-01-01
      • 2020-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多