angularjs没有响应GET方法



我在django和angularJs方面相对较新。问题是angularJs没有正确响应get方法。我有一个由django开发的网页,我在那里有一个搜索字段。对于搜索的执行,我使用angularJs的功能,即提交并编写angular Js代码,以使用get方法返回值。也许我在这里犯了一个错误。你可以看到我的代码。。。这是我的模板,其中包含angularJs也。。。

<div class="navbar navbar-default " ng-controller="NavCtrl">
    <form action="" class="navbar-form navbar-right" ng-submit="search()">
        <input class="form-control col-lg-8" type="text" placeholder="Search" ng-model="term"></input>
    </form>
</div>
<script>
    app.controller("NavCtrl", ['$scope', '$http', '$location', '$q', '$timeout',
        function NavCtrl($scope, $http, $location, $q, $timeout) {
            $scope.results = ["Test"];
            $scope.term = "";
            $scope.reqs = "5";
            $scope.pics = "45";
            $scope.ddata = "asdasd";
            $scope.ddata = $http.post("{% url 'get-nav-info' %}").success(
                function (result) {
                    //$scope.reqs = result.data.data.num_request;
                    //$scope.pics = result.data.data.num_photo;
                    return result.data;
                }
            );
            //$scope.reqs = $scope.ddata.num_request;
            //$scope.pics = $scope.ddata.num_photo;
            $scope.search = function () {
                //alert("test");
                //$location.absUrl("{% url 'search-term-show' %}").search({'term':$scope.term}).apply();
                //$location.path("{% url 'search-term-show' %}").search({'term':$scope.term}).apply();
                $http.get("{% url 'search-term-show' %}?term=" + $scope.term).success(function (result) {
                    return result.data;
                });
                //$scope.$apply();
            }
        }
    ]);
</script>

现在的问题是,当我按下回车键时,没有结果,但如果我手动写入这个的URLhttp://www.kothay.com/searchphoto/?term=a在地址栏中,然后显示结果。另外,这个url就是当我按enter键搜索照片时应该出现在地址栏上的url。但按下回车键后,它不会出现在地址栏中,这就是为什么结果不会显示的原因。我希望你能理解我想说的话。可能是我的代码有错误。请帮我解决这个问题。

你做错了。

第一,成功是得到的延迟,所以返回result.data并将其返回到得到的延迟中,它就在那里进入天堂。因此,如果你想保持当前的架构,它应该看起来更像这个

$scope.search = [];
getsearch = function () {
                $http.get("{% url 'search-term-show' %}?term=" + $scope.term).success(function (result) {
                    $scope.search = result.data;
                });
            };
getsearch();

第二,如果ctrl函数结束,摘要在您响应之前结束,它仍然不能更新您的UI,因为它在另一个范围(不是$scope,而是编程术语scope)中不会更新您的用户界面。解决这个问题的方法是把你的数据放在一个服务中,然后在你的ctr中就可以了。

function ctrl($scope, myservice){
  $scope.data = myservice;
}
ng-repeat="x in data.results"

这是一个完整的教程http://bresleveloper.blogspot.co.il/2013/08/breslevelopers-angularjs-tutorial.html

最后一件事是始终使用.error(…)

最新更新