+
 新版

请求PYTHON的WEB微框架BOTTLE处理AJAX的问题

hdparrot 发布于 2015/09/06 23:51
阅读 1K+
收藏 0
BOTTLE的说明文档里有这样一段代码:
#coding='utf-8'
from bottle import route,run,response,request,CherryPyServer
html='''
<html>
<head>
<title>AJAX测试</title>
<script type="text/javascript">
var xmlHttp;


function createXMLHttpRequest(){
 if(window.ActiveXObject){
 xmlHttp=new ActiveXObject("Microsoft.XMLHTTP")
 }
 else if(window.XMLHttpRequest){
 xmlHttp=new XMLHttpRequest();
 }
}


function startRequest(){
 createXMLHttpRequest();
 xmlHttp.onreadystatechange=handleStateChange;
 xmlHttp.open("GET","ajax",true);
 xmlHttp.send(null);
}


function handleStateChange(){
 if(xmlHttp.readyState==4){
 if(xmlHttp.status==200){
 alert("The server replied with:" + xmlHttp.responseText);
 }
 }
}
</script>
</head>
<body>
 <form action="#">
 <input type="button" value="Start Basic Asynchronous Request" onclick="startRequest();" />
 </form>
</body>
</html>
'''
@route("/")
def hello():
    return html
@route("/ajax")
def ajax():
    #if request.headers.get('X-Requested-With')=='XMLHttpRequest':
    if request.is_xhr:
        return 'This is an AJAX request'
    else:
        return 'Not An AJAX request!'


run(host='0.0.0.0',port = 80)  




我试了一下,发现得到的结果总是 ’This is a normal request’
我修改代码让程序遍历了一下request.headers,发现根本就没有’X-Requested-With’这个key。
不知道有没有人遇到过这样的问题,是我用的不对还是框架的问题。
是否还有别的办法来判断一个请求是否为AJAX请求?
请各位前辈帮忙,谢谢!
加载中
2
游
游走的鱼

你用jquery 试 就可以了  你的脚本请求  没有加头信息 

xmlHttp.setRequestHeader('X-Requested-With', 'XMLHttpRequest' );

h
hdparrot
太感谢了,原来直接用js发送请求还需要加这个东西,终于明白了。现在还用jquery来发送了,果然简单了好多。以后有时间要好好学学了
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部