Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ajax suggest, нужны советы, эффективно по клавишам посылать запросы 
:(
    Опции темы
ashenemy
Дата 13.3.2008, 03:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 7.11.2006

Репутация: нет
Всего: нет



Я не повторяюсь, просто хотел написать именно свой, получилось не ахти...
Код

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru">

<head>

<style>
div#Result
{

                border-color: #123456;
                border: 1px solid;
                width: 150px;
        
        position: relative;
        float: left;
        background-color: #FFFFFF;
                overflow-y: scroll;
               
        }
UL
{
border: solid 1px red;
padding-left: 0px;
margin-top: 0px;
}


</style>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"/>
<script src="prototype.js" language="JavaScript" type="text/javascript"></script>


<script type="text/javascript" language="JavaScript">

function checkstr() {
if($F('str').length != 0) {
 var url    = 'check_str.php';
       var params = 'str=' + $F('str');
       var ajax   = new Ajax.Updater(
                                       {success: 'Result'},
                                        url, 
                                       {method: 'get',
                                        parameters: params, 
                                        onFailure: reportError}
                                     );
                                     $('Result').style.visibility = '';
                                     }
                                     if($F('str').length == 0) {
                                     $('Result').style.visibility = 'hidden';
                                     }
                                     
}


function reportError(request) {
     $('Result').innerHTML = "Error";
}
function changecolor(id)
{
    $('ul' + id).style.background = 'red';
}
function changecolorOut(id)
{
        $('ul' + id).style.background = '';
}
function cli(str)
{
    $('str').value=str;
    $('Result').style.visibility = 'hidden';
}
</script>
</head>

<body>

<form>
<div style="cursor:default; position:relative; padding:0px;">
  <input type="text" name="str" id="str" onkeyup="checkstr();" />
  </div>
  <div id="Result" style="visibility: hidden;"></div>
  
</form>

</body>
</html>

check_str.php
Код

<pre>
<?php

  echo "<div onMouseOver=\"changecolor('1')\" onMouseOut=\"changecolorOut('1')\" onclick=\"cli('1')\" id=\"ul1\" style=\"background: blue;\">".$_REQUEST["str"]."</div>";
  echo "<div onMouseOver=\"changecolor('2')\" onMouseOut=\"changecolorOut('2')\" onclick=\"cli('2')\" id=\"ul2\" style=\"background: blue;\">".$_REQUEST["str"]."</div>";

?>
</pre>


здесь идет отбор из базы

вроде все работает, мне что не нравится , что нет управления клавой, и чет вроде через одно место получилось

Помоги те плз, точнее дайте дайте направление. хочется самому пописать, просьба готовых решений не давать smile 
PM MAIL   Вверх
ashenemy
Дата 15.3.2008, 04:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 7.11.2006

Репутация: нет
Всего: нет



Если нет ответа, полдучается что без JSON - это сделать - невозможно?
PM MAIL   Вверх
Sardar
Дата 15.3.2008, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



JSON лишь формат записи, удобный для чтения на клиенте. У тебя вопрос я помню был в работе с клавой.
На вскидку всё что нужно, это ставить запрос на таймер в 3-5 секунд. На новых клавишах сбрасывать таймер. Сейчас ты посылаешь десятки запросов, на каждый новый символ.

Код
var tmr = null;
function onKeyUp() {
   if(tmr != null) clearTimeout(tmr);
   tmr = setTimeout(checkstr, 5000);
}

onkeyup = "onKeyUp()"

Вроде всё. В чём конкретно вопрос/сложности/проблемы?


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
ashenemy
Дата 16.3.2008, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 7.11.2006

Репутация: нет
Всего: нет



смотри мне надо чтобы моржно было клавой вверх и вниз идти между дивами

Добавлено через 46 секунд
и еще, не слишком ли сложно подощел к решению данной задачи?
PM MAIL   Вверх
Sardar
Дата 17.3.2008, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Цитата(ashenemy @  16.3.2008,  22:42 Найти цитируемый пост)
мне надо чтобы моржно было клавой вверх и вниз идти между дивами

Проще всего за место div'ов поставить select с опциями. Иначе ловить onkeydown/onkeyup на document/window, сдвигать фокус на следующий div (это по визуальной части + твоя логика). Сначала задайся вопросом, точно ли это тебе нужно, а не простой и ясный select. Если да, то скинь сюда всю вёрстку + стили для выделеной опции + логику выделения (хотя бы словами). Посмотрим, напишем.

Цитата(ashenemy @  16.3.2008,  22:42 Найти цитируемый пост)
и еще, не слишком ли сложно подощел к решению данной задачи? 

Сложного то ничего нет, тем более используя prototype.js  Вопрос эффективности описал в первом посте.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
IDVsbruck
Дата 17.3.2008, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 778
Регистрация: 12.11.2006

Репутация: 8
Всего: 22



Не совсем понял, в чем состоит твой вопрос, но есть несколько замечаний:
1. надо ставить отработку не на onkeyup, а на onkeypress, чтобы запрос не срабатывал на всякие Alt, Shift, Ctrl, Enter и т.д. - так правильно, если не нужен предикат
2. хотя я не пользуюсь библиотеками (чистый XMLHttpRequest), но раз у меня это есть, то и в библиотеке точно должно быть ... есть такая штука - request.abort() - ею удобно пользоваться при частых запросах, чтобы отменялся и не обрабатывался предыдущий запрос. Это как раз относится к твоему коду, так как нажитие клавиш может быть быстрым и пользователю уже не требуется выполнение предыдущего запроса. Только надо найти отображение данной функции в библиотеке.
3. не замечание, но наблюдение. В разных проектах использовал 3 способа передачи данных - строка с собственными разделителями, строка с xml-кодом, JSON-строка. Могу однозначно сказать, что последний вариант наиболее быстрый как для передачи (компактность), так и для парсинга (eval). Это проверено неоднократно и даже с засеканием времени. Хотя при передаче небольшого объема данных все равно ... Но при очень больших - весьма и весьма ощутимо (я работал со странами/штатами/городами и приходилось передавать по нескольку тысяч значений в строке - и разница была заметна).
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1618 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.