Python/Javascript/AJAX 实时搜索帮助

4 投票
1 回答
1749 浏览
提问于 2025-04-16 17:40

我正在尝试用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)">,这样可能就能实现你想要的效果。

撰写回答