Python / AJAX / JavaScript - печать HTML-страницы дважды во время GET - PullRequest
0 голосов
/ 19 мая 2011

В настоящее время у меня есть проблема с моей программой, из-за которой я пытаюсь произвести поиск в реальном времени (так же, как в Google) с использованием AJAX.На данный момент он основан на списке городов, поэтому, когда пользователь вводит, например, «A» в форме, он отображает список всех городов, которые начинаются с «A».Если пользователь продолжит печатать, например, «Al», он покажет список всех городов, которые начинаются с «Al» и т. Д. И т. П.

Проблема, с которой я столкнулся, как следует из названия, то, что, если я возвращаю (удаляю) текст в форме, мой скрипт на python отправит ответ, чтобы снова напечатать HTML-страницу, таким образом имея две копии формы.

Ниже приведены некоторые ссылки на изображения того, чтоЯ имею в виду

Второй поиск:

http://img694.imageshack.us/img694/1972/city3f.jpg

Дубликат страницы:

http://img819.imageshack.us/img819/5808/city4p.jpg

Ниже мой код:

Python:

city = list()

if form.has_key('q'):       
    if len(form['q'].value) > 0:
        for item in city_names: # city_names is a list of cities
            if item.startswith(form['q'].value):
                if not city:
                    city.append(item)
                else:
                    city.append(item)

        print "Content-Type: text/html\n"
        print city

else:
    print "Content-Type: text/html\n"
    print template #html

AJAX:

function showCity(string)
{
    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){
            document.getElementById("City").innerHTML=xmlhttp.responseText;
        }
    }
    xmlhttp.open("GET", "/cgi-bin/suggestions.py?q="+string, true);
    xmlhttp.send();
}

Пожалуйста, помогите

1 Ответ

0 голосов
/ 19 мая 2011

Как настроены ваши события?

На изображении http://img819.imageshack.us/img819/5808/city4p.jpg, я вижу, что он вызывается с q=, и нет строки для подражания, поэтому showCity вызывается с пустымстрока.Это заставляет ваш сценарий идти по пути шаблона печати. ​​

Можете ли вы показать код, по которому вызывается showCity?

Добавлено

Использование onkeypress.Судя по быстрому тесту, это вообще не регистрирует возврат.Кроме этого вам нужно отфильтровать возврат или хотя бы проверить, есть ли в строке содержимое.

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