JQuery Flexbox - получение динамических результатов - PullRequest
0 голосов
/ 02 июня 2011

Я реализовал Flexbox как решение для автозаполнения списка курсов. Я просто передал ему полный список курсов, извлеченных из БД, в правильном формате JSON. У меня сложилось впечатление, что он позаботится о сужении списка совпадений при наборе текста, но вместо этого просто печатает весь список и выделяет совпадающие символы.

Нужно ли мне писать свой собственный серверный скрипт для динамического сужения результатов при вводе? Я подумал, что передачи этого списка будет достаточно, поскольку в документации особо отмечается: «Во всех примерах, которые вызывают« results.aspx », данные представляют собой список из 105 английских слов».

Спасибо за чей-либо вклад. Мой код ниже:

    var courseList = <?= $course_list; ?>;             

    $('#course').flexbox(courseList, {
        initialValue : '<?= $pre_fill['course']; ?>',
        watermark: 'Search for course/session name',
        paging: false,

    });

    $('#course_input').change(function() {
        $('#course_hidden').val($(this).val());

    });

1 Ответ

1 голос
/ 17 июня 2011

Я также хотел бы знать вопрос к этому. После создания динамического источника данных на сервере, если я копирую и вставляю объект данных в формате:

{"results": [{"id":"key","name":"value"},...]}

фильтрация работает по плану. Кто-нибудь знает, что происходит со страницей «results.aspx» на домашней странице Flexbox и почему / как она работает правильно?

Edit:

Кажется, я понял это для меня, по крайней мере. На бэкэнде вы должны написать запрос, который использует параметр «q», который передается обратно на сервер. Таким образом, вы должны выполнить свою собственную фильтрацию в бэкэнде, используя именованный параметр «q», любым способом, который вам нравится. Для меня я пытался отфильтровать время, поэтому пример был:

for ($k=0;$k<=1;$k++){
        //AM PM
        for ($i=1;$i<=12;$i++){
            //hours
            for ($j=0;$j<=3;$j++){
                //minutes
                $AMPM = "AM";
                $thej = ($j*15);
                $thei = ($i);

                if($k == 1){
                    $AMPM = "PM";
                }
                if($thej == 0){
                    $thej = "00";
                }
                if($thei != 10 && $thei !=11 && $thei !=12){
                    $thei = "0".$thei;
                }
                if($q != ""){
                    if(preg_match("/$q/i", $thei.":".$thej." ".$AMPM)){
                        $subarray = array("id" => $thei.":".$thej." ".$AMPM, "name" => $thei.":".$thej." ".$AMPM);
                        $newarray[] = $subarray;
                    }
                }
                else{
                    $subarray = array("id" => $thei.":".$thej." ".$AMPM, "name" => $thei.":".$thej." ".$AMPM);
                    $newarray[] = $subarray;
                }

            }
        }
    }
    $finalarray = array("results"=>$newarray, "total"=>count($newarray));
    header('Content-type: application/json');
    print(json_encode($finalarray));

Грязный сейчас, но я уберу это позже. Надеюсь, что это работает для вас!

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