python处理ajax请求

先要起一个服务 server.py,可以支持python的cgi脚本。

1 #!coding:utf8
2 from BaseHTTPServer import HTTPServer
3 from CGIHTTPServer import CGIHTTPRequestHandler
4 
5 port=8080
6 
7 httpd=HTTPServer(('',port),CGIHTTPRequestHandler)
8 print("Starting simple_http on port:"+str(httpd.server_port))
9 httpd.serve_forever()

在服务脚本相同的目录下新建cgi-bin文件夹,放置python的cgi脚本,getuser.py

 1 #!coding:utf8
 2 import cgi,cgitb
 3 import urllib2
 4 form=cgi.FieldStorage()
 5 name=form.getvalue('user_name')
 6 age=form.getvalue('user_age')
 7 sex=form.getvalue('user_sex')
 8 data=name
 9 print "Content-type: text/html"
10 
11 print
12 
13 if name != None and len(name) > 0:
14     print "<p id=name>%s</p>"%name
15 else:
16     print "<p id=name>请输入相关信息</p>"

html页面,以post方式发送请求,并返回用户名,ajax.html,和server.py在一个目录下:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Ajax Post 传值</title>
</head>

<script language="javascript">
function saveUserInfo()
{
    //获取接受返回信息层
    var msg = document.getElementById("msg");

    //获取表单对象和用户信息值
    var f = document.user_info;
    var userName = f.user_name.value;
    var userAge   = f.user_age.value;
    var userSex   = f.user_sex.value;

    //接收表单的URL地址
    var url = "/cgi-bin/getuser.py";

    //需要POST的值,把每个变量都通过&来联接
    var postStr   = "user_name="+ userName +"&user_age="+ userAge +"&user_sex="+ userSex;

    //实例化Ajax
    //var ajax = InitAjax();


    var ajax = false;
    //开始初始化XMLHttpRequest对象
    if(window.XMLHttpRequest) 
    {     //Mozilla 浏览器
        ajax = new XMLHttpRequest();
        if (ajax.overrideMimeType) 
        {    //设置MiME类别
            ajax.overrideMimeType("text/xml");
        }
    }
    else if (window.ActiveXObject) 
    {     // IE浏览器
        try 
        {
            ajax = new ActiveXObject("Msxml2.XMLHTTP");
        } 
        catch (e) 
        {
            try 
            {
                ajax = new ActiveXObject("Microsoft.XMLHTTP");
            } 
            catch (e) {}
         }
    }
    if (!ajax) 
    {     // 异常,创建对象实例失败
        window.alert("不能创建XMLHttpRequest对象实例.");
        return false;
    }

    //通过Post方式打开连接
    ajax.open("POST", url, true);

    //定义传输的文件HTTP头信息
    ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

    //发送POST数据
    ajax.send(postStr);

    //获取执行状态
    ajax.onreadystatechange = function() 
    { 
           //如果执行状态成功,那么就把返回信息写到指定的层里
           if (ajax.readyState == 4 && ajax.status == 200) 
        { 
            msg.innerHTML = ajax.responseText;
            //msg.innerHTML = ajax.return; 
           } 
    } 
}
</script>

<body >
<div id="msg"></div>
<form name="user_info" method="post" action="">
姓名:<input type="text" name="user_name" /><br />
年龄:<input type="text" name="user_age" /><br />
性别:<input type="text" name="user_sex" /><br />
<input type="button" value="提交表单" onClick="saveUserInfo()">
</form>
</body>
</html>

首先运行server.py:

启动浏览器,输入127.0.0.1:8080:

点击ajax.html:

输入用户名,年龄,性别,点击提交或者什么都不输入

posted @ 2014-07-21 20:29  liuweiqiang2v  阅读(26742)  评论(0编辑  收藏  举报