编辑出愚蠢的错误
我使用AJAX访问python脚本,从python脚本获取一些TEXT&将它显示在我的网页上。
我的问题:是响应文本是“未定义”,应该是这个“bbbb”
我很困惑我哪里出错了?是不是我的python脚本不正确(没有正确处理AJAX(?requests?)),是我的javascript还是我的WSGI服务器?
HTML&使用Javascript:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript">
<!--
function post( dest, params )
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
return xmlhttp.responseText;
}
}
xmlhttp.open("POST",dest,true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send( params );
}
function onTest()
{
var response = post( "cgi/aaa.py", "email=blah" );
var output = document.getElementById( "bb" );
output.innerHTML = response;
alert( response );
}
-->
</script>
</head>
<body>
<p id="bb"> abcdef </p>
<a href="javascript:onTest()">Click it</a>
</body>
</html>
我的python脚本:
import cgitb; cgitb.enable()
import cgi
import os
input_data = cgi.FieldStorage()
print "bbbb"
#print "you said: " + input_data['email']
答案 0 :(得分:1)
你得到了未定义,因为你只是做了帖子,并没有等待响应回来。您的alert
来电应该在状态更改中,您现在有return xmlhttp.responseText;
。请记住,Javascript函数(讽刺的是alert
除外)不会阻塞。
答案 1 :(得分:0)
也许您应该在此功能中使用response
,而不是output
。 output
使用id="bb"
引用该元素,因此innerHTML
实际上已正确设置:
function onTest()
{
var response = post( "cgi/aaa.py", "email=blah" );
var output = document.getElementById( "bb" );
output.innerHTML = response;
alert( response );
}
答案 2 :(得分:0)
问题在于:
var output = document.getElementById( "bb" );
...
alert( output );
...
<p id="bb"> abcdef </p>
变量输出指向id为“bb”的DOM元素,这是一个HTML段落标记。
我想你可能想打印response
。