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:
输入用户名,年龄,性别,点击提交或者什么都不输入