Python/Javascript/AJAX 实时搜索帮助
我正在尝试用Python创建一个AJAX实时搜索功能(就像谷歌的建议功能)。我对AJAX还不太熟悉,所以开始阅读一些教程和有用的文档。我找到一个例子,http://www.w3schools.com/ajax/ajax_aspphp.asp,这个例子基本上就是我想实现的,但它只适用于asp/php。我已经完成了程序的Python部分,但遇到了一个未定义的错误。
下面是我的JavaScript代码(test.js,基本上和例子中的一样):
function showHint(str)
{
var xmlhttp;
if (str.length==0)
{
document.getElementById("txtHint").innerHTML="";
return;
}
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)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","search.py?q="+str,true);
xmlhttp.send();
}
在Firefox 4中,出现了“str是未定义的”错误。
下面是我Python代码的HTML部分:
<html>
<head>
<title>Live Search</title>
<script src="http://localhost:8000/test.js" type="text/javascript"></script>
</head>
<body>
<h1> Cities </h1>
Enter Anything: <input type="text" id="sname" onkeyup="showHint(this.text)">
%(search)s
</body>
</html>
注意:之前我用的是onkeyup="showHint(this.id)",但不知道为什么不管用……它总是把“sname”作为查询,而不是我在输入框中输入的内容。
请帮帮我
1 个回答
2
<input>这个元素是没有text这个属性的。所以this.text
和后面的str
就没有定义,变成了undefined。也许你可以试试这个:<input type="text" id="sname" onkeyup="showHint(this.value)">
,这样可能就能实现你想要的效果。