【问题标题】:Angularjs with Django using AJAX requestAngularjs 与 Django 使用 AJAX 请求
【发布时间】:2015-02-14 18:25:27
【问题描述】:

我通过 Post 方法发送了一条信息,直到在 Django 中查看并返回该站点。但是,我没有在网站上提交此信息。

文件 post3.html

<!DOCTYPE html>
<html ng-app>
<head>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.27/angular.min.js"></script>
    <script>
        function ListDropdown($scope, $http){               
            $scope.ccvms={lista01:['1','3','5','7','9'],lista02:['2','4','6','8','10']}
            $scope.send=function(x,y){
                $http({
                method:'POST',
                url:'/escalar',
                data:x+y,
                headers:{'Content-Type': 'application/x-www-form-urlencoded'},
                }).success(function(c){
                      console.log(c)
                })
            }
        } 
    </script>
</head>
<body>
    <div ng-controller="ListDropdown">
        <select ng-model="ccvm" ng-options="ccvm as ccvm for (ccvm, nums) in ccvms"></select>
        <select ng-model="num" ng-disabled="!ccvm" ng-options="num for num in ccvms[ccvm]" ng-change="send(num, ccvm)"></select>
        <h1 ng-model=c>
    </div>
</body>
</html>

文件views.py

from django.views.decorators.csrf import csrf_exempt, csrf_protect
from django.http import HttpResponse
from django.shortcuts import render_to_response

def post3(request):
    return render_to_response("post3.html")

@csrf_exempt
def escalando(z):
    x=list(z.POST)
    c=str(x[0])+"_retornou"
    return HttpResponse(c)

文件 urls.py

from django.conf.urls import patterns, include, url

urlpatterns = patterns('',
    url(r'^post3/','bvmfconsulta.views.post3'),
    url(r'^escalar','bvmfconsulta.views.escalando'),
)

出现在 console.log(c) 中的信息,例如“4lista02_retornou”,但是,我没有在网站上插入它。

【问题讨论】:

  • 通过 AJAX 调用接收数据后,您应该通过设置 $scope.ccvm = c 使其角度可见
  • 谢谢。成功函数为success(function(c){$c=scope.ccvm}),h1 为&lt;h1 ng-bind="cvm"&gt;&lt;/h1&gt;。但是,由于 ng-bind 这首先出现了 select ng-model="ccvm" 的选项,Django 的响应随后出现。我只需要出现 Django 的响应。
  • 我解决如下:function ListDropdown(scope, $http){$scope.resposta="" ......... success(function(c){$scope.resposta=c})}}和h1标签&lt;h1 ng-bind="resposta"&gt;&lt;/h1&gt;

标签: python ajax django angularjs


【解决方案1】:

我解决如下:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.27/angular.min.js"></script>
<script>
    function ListDropdown($scope, $http){               
        $scope.ccvms={lista01:['1','3','5','7','9'],lista02:['2','4','6','8','10']}
        $scope.resposta=""
        $scope.send=function(x,y){
            $http({
            method:'POST',
            url:'/escalar',
            data:x+y,
            headers:{'Content-Type': 'application/x-www-form-urlencoded'},
            }).success(function(c){
                  $scope.resposta=c
            })
        }
    } 
</script>

<h1 ng-bind="resposta"></h1>

【讨论】:

    猜你喜欢
    • 2015-02-13
    • 2013-02-15
    • 2014-02-15
    • 2016-12-28
    • 1970-01-01
    • 2016-11-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-18
    相关资源
    最近更新 更多