您的位置:首页 > 编程语言 > Python开发

python处理ajax请求

2014-07-21 20:29 330 查看
先要起一个服务 server.py,可以支持python的cgi脚本。

#!coding:utf8
from BaseHTTPServer import HTTPServer
from CGIHTTPServer import CGIHTTPRequestHandler

port=8080

httpd=HTTPServer(('',port),CGIHTTPRequestHandler)
print("Starting simple_http on port:"+str(httpd.server_port))
httpd.serve_forever()


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

#!coding:utf8
import cgi,cgitb
import urllib2
form=cgi.FieldStorage()
name=form.getvalue('user_name')
age=form.getvalue('user_age')
sex=form.getvalue('user_sex')
data=name
print "Content-type: text/html"

print

if name != None and len(name) > 0:
print "<p id=name>%s</p>"%name
else:
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:



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



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: