Python / Javascript / AJAX помощь поиска в реальном времени - PullRequest
4 голосов
/ 15 мая 2011

Я пытаюсь создать живой поиск AJAX (такой как Google Suggest) с python.Я новичок в 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 is undefined».

Ниже приведена моя HTML-часть кода на python:

<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 голосов
/ 15 мая 2011

Элемент <input> не имеет атрибута текста.Вот почему this.text и более поздние str не определены.Может быть, <input type="text" id="sname" onkeyup="showHint(this.value)"> сделает то, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...