请求PYTHON的WEB微框架BOTTLE处理AJAX的问题? 400 报错 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)
你用jquery 试 就可以了 你的脚本请求 没有加头信息
xmlHttp.setRequestHeader('X-Requested-With', 'XMLHttpRequest' );
######太感谢了,原来直接用js发送请求还需要加这个东西,终于明白了。现在还用jquery来发送了,果然简单了好多。以后有时间要好好学学了######http://www.w3school.com.cn/tiy/t.asp?f=jquery_ajax_post
你用firebug或者chrome的控制台,会发现ajax的header的确带有X-Requested-With: XMLHttpRequest。
所以上面代码没写错的话肯定成功的。
仔细看看是哪里遗漏?
http://www.bottlepy.org/docs/dev/_modules/bottle.html#BaseRequest.is_xhr
if request.is_xhr: pass
######谢谢,这个方法我也试过了,结果还是一样,判断不了AJAX请求。版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。