Python 之Ajax

1.使用Ajax在后台传递参数的示例

  要使用Ajax传递参数,需要使用jquery,使用jquery需要注意以下几点。

  1.建立static的目录,将jquery导入

  

  2.在项目s13day18_django的settings配置中,指定jquery的目录,同时注释掉CSRF

STATIC_URL = ‘/static/‘
STATICFILES_DIRS = (
    os.path.join(BASE_DIR,‘static‘),
)
# ‘django.middleware.csrf.CsrfViewMiddleware‘,

  3.在app01下面,指定路由关系

urlpatterns = [
    # url(r‘^index/(\d+)/‘, views.index),
    # url(r‘^detail/(\d+)/‘,views.detail),
    # url(r‘^template/‘,views.template),
    url(r‘^extend/‘,views.extend),
    url(r‘^assets/‘,views.assets),
    url(r‘^userinfo/‘,views.userinfo),
    url(r‘^ajax_demo/‘,views.ajax_demo),
]

  4.在app01下面,定义ajax_demo函数

def ajax_demo(request):
    if request.method == ‘POST‘:
        user = request.POST.get(‘user‘)
        pwd = request.POST.get(‘pwd‘)
        print(user,pwd)
        if user == ‘111‘ and pwd == ‘222‘:
            return HttpResponse(‘1‘)
        else:
            return HttpResponse(‘2‘)
    return render(request,‘ajax_demo.html‘)

  5.在templates中,添加关于ajax_demo的HTML信息

<body>
    <div>
        <p>用户名: <input type="text" id="username" /></p>
    </div>
    <div>
        <p>密码: <input type="password" id="pwd" /></p>
    </div>
    <input type="button" value="提交" onclick="SubmitForm();"/>

    <script src="/static/jquery-1.12.4.js"></script>
    <script>
        function SubmitForm(){
            $.ajax({
                url:‘/web/ajax_demo/‘,
                type:‘POST‘,
                data:{‘user‘:$(‘#username‘).val(),‘pwd‘:$(‘#pwd‘).val()},
                success:function(data){
                    if(data == ‘1‘){
                        location.href="http://www.baidu.com";
                    }
                    else{
                        alert("用户名或密码错误")
                    }
                }
            })
        }
    </script>
</body>

  整个执行的过程是,ajax传递参数给了函数ajax_demo,函数获取到用户键入的值,然后通过HttpResponse返回给回调函数success,回调函数再执行相应的操作。

====================================================================================================  但是在实际的使用中,我们要这么定义views.py

import json
def ajax_demo(request):
    if request.method == ‘POST‘:
        ret = {‘status‘:False,‘message‘:‘‘}
        user = request.POST.get(‘user‘)
        pwd = request.POST.get(‘pwd‘)
        print(user,pwd)
        if user == ‘111‘ and pwd == ‘222‘:
            ret[‘status‘] = True
            return HttpResponse(json.dumps(ret))
        else:
            ret[‘message‘] = ‘用户名或密码错误‘
            return HttpResponse(json.dumps(ret))
    return render(request,‘ajax_demo.html‘)

  ajax_demo.html

<body>
    <div>
        <p>用户名: <input type="text" id="username" /></p>
    </div>
    <div>
        <p>密码: <input type="password" id="pwd" /></p>
    </div>
    <input type="button" value="提交" onclick="SubmitForm();"/>

    <script src="/static/jquery-1.12.4.js"></script>
    <script>
        function SubmitForm(){
            $.ajax({
                url:‘/web/ajax_demo/‘,
                type:‘POST‘,
                data:{‘user‘:$(‘#username‘).val(),‘pwd‘:$(‘#pwd‘).val()},
                dataType:‘json‘,
                success:function(data){
                    if(data.status){
                        location.href="http://www.baidu.com";
                    }
                    else{
                        alert(data.message)
                    }
                }
            })
        }
    </script>
</body>

  如果不用ajax自带的dataType类型,也可以自己将json的格式转化为字典格式:

    <script src="/static/jquery-1.12.4.js"></script>
    <script>
        function SubmitForm(){
            $.ajax({
                url:‘/web/ajax_demo/‘,
                type:‘POST‘,
                data:{‘user‘:$(‘#username‘).val(),‘pwd‘:$(‘#pwd‘).val()},
{#                dataType:‘json‘,#}
                success:function(data){
                    var data_dic = JSON.parse(data);
                    if(data_dic[‘status‘]){
                        location.href="http://www.baidu.com";
                    }
                    else{
                        alert(data_dic[‘message‘])
                    }
                }
            })
        }
    </script>

  JQuery中的ajax也是调用了浏览器中的XMLHttpRequest对象来执行的。

  http://www.cnblogs.com/wupeiqi/articles/5703697.html

  

时间: 2024-08-02 11:47:05

Python 之Ajax的相关文章

JS+Python(ajax+json)例子

提供基于js与python利用ajax传输json数据的部分示例: 在static文件js目录下: jquery.js st_goods.js HTML页面: <!DOCTYPE html> {% load staticfiles %} <html> <head>     <meta charset="utf-8">     <title>ECharts</title> </head> <body

python处理AJAX请求

先要起一个服务 server.py,可以支持python的cgi脚本. #!coding:utf8  from BaseHTTPServer import HTTPServer3  from CGIHTTPServer import CGIHTTPRequestHandler  port=80806  httpd=HTTPServer(('',port),CGIHTTPRequestHandler)  print("Starting simple_http on port:"+str(

数据之路 - Python爬虫 - Ajax

一.Ajax数据爬取 1.Ajax介绍 Ajax,全称为Asynchronous JavaScript and XML,即异步的JavaScript和XML. 它不是一门编程语言,而是利用JavaScript在保证页面不被刷新.页面链接不改变的情况下与服务器交换数据并更新部分网页的技术.发送Ajax请求到网页更新过程,简单分为以下3步:发送请求:解析内容:渲染网页.Ajax具有特殊的请求类型,它叫作xhr. 2.Ajax数据爬取 # 首先,定义一个方法来获取每次请求的结果. 在请求时,page是

Python 爬虫 ajax爬取马云爸爸微博内容

ajax爬取情况 有时候我们在用 Requests 抓取页面的时候,得到的结果可能和在浏览器中看到的是不一样的,在浏览器中可以看到正常显示的页面数据,但是使用 Requests 得到的结果并没有,这其中的原因是 Requests 获取的都是原始的 HTML 文档,而浏览器中的页面则是页面又经过 JavaScript 处理数据后生成的结果,这些数据的来源有多种,可能是通过 Ajax 加载的,可能是包含在了 HTML 文档中的,也可能是经过 JavaScript 经过特定算法计算后生成的 项目代码如

【python】-- Ajax

Ajax AJAX,Asynchronous JavaScript and XML (异步的JavaScript和XML),一种创建交互式网页应用的网页开发技术方案. 异步的JavaScript:使用 [JavaScript语言] 以及 相关[浏览器提供类库] 的功能向服务端发送请求,当服务端处理完请求之后,[自动执行某个JavaScript的回调函数].PS:以上请求和响应的整个过程是[偷偷]进行的,页面上无任何感知. XMLXML是一种标记语言,是Ajax在和后台交互时传输数据的格式之一 一

python 解析ajax请求带有json参数,请求方式是post的url(注意:参数的json格式的)

import requests # tag = 'http://exercise.kingname.info/exercise_ajax_1.html'#最开始的网址,下面两个为子链接 url = 'http://exercise.kingname.info/ajax_1_backend' url2 = 'http://exercise.kingname.info/ajax_1_postbackend' req = requests.get(url) print(req.text) params

python Django Ajax基础

Python网络爬虫(三)

AJAX学习 AJAX=Asynchronous JavaScript and XML(异步的 JavaScript 和 XML).通俗来说,AJAX是一种无需加载整个网页的情况下,通过在后台与服务器进行少量数据交换,更新部分网页的技术,用于创建快速动态网页的技术. 向服务器发送请求与服务器的响应 发送请求可以利用XMLHttpRequest对象的open()和send()方法. 方法 描述 open(method,url,async) 规定请求的类型.URL 以及是否异步处理请求.method

COIS 12036 Human Computer Interaction

COIS 12036 Human Computer Interaction (HCI)Project B (Term 2 – 2019)Total marks: 45 marksProject B: TaskThe overall task is divided into two project phases (i.e. two separate, but related projects). It isstrongly advised that you read the following p