jQuery Autocomplete Ajax не создает выпадающий список из php - PullRequest
2 голосов
/ 06 апреля 2011

Я, как новичок, борюсь с автозаполнением, которое не создает выпадающий список с вариантами выбора.Полный код состоит из 2 этапов - пользователь выбирает страну с помощью переключателей, затем запускает автозаполнение, чтобы выбрать штат / провинцию.Для Firefox, кода страны и состояния, вводимого POST для сценария php, запрос выполняется корректно с использованием элементов сценария страны и состояния, и создается ответ.Автозаполнение не создает выпадающий список с выборами.Firefox выдает сообщение об ошибке разбора и неверное сообщение JSON из моей ошибки: alert.Когда я помещаю элементы ответа в JSONlint, он говорит, что элемент является допустимым JSON.Firefox показывает правильное содержимое в массивах запросов, когда я меняю страну и меняю штат.Я скопировал функцию успеха и опцию выбора, но я не уверен насчет них.Оповещение в опции выбора не срабатывает.Помощь будет оценена, чтобы получить заполненный выпадающий список.Вот код:

jQuery Autocomplete:

    $("#stateProvince").autocomplete
    ({ 
        source: function( request, response )
        {           

            $.ajax(
                            { 
                url: "getStateProvince.php",
                data: {
                                          term: request.term,   
                                          country: $('input[name=country]:checked').val(),    
                                          },        
                type: "POST",  
                dataType: "json",
                error: function(x,y,z) {
                  alert(x+'\n'+y+'\n'+z);};
                success: function( data ) 
                {
                    response( $.map( data, function( item ) 
                    {
                        return{
                                                      label: item.label,
                                                      value: item.value
                                                      }
                    }));
                }
            });             
        },
        minLength: 2,
        select: function (event, ui)   //is this select necessary?  correct?   return true or false?
                {
                alert('|' + ui.item + '|2nd');
                $("#stateProvince").val(ui.item.value);
                return;
                }
                 });

выбранный php:

    while ($row = mysql_fetch_array($fetch, MYSQL_ASSOC)) 
    {
/* In each row, pull stateProvinceNameInEnglish and stateProvinceAbbreviation. */             
        $row_array['label'] = $row['stateProvinceNameInEnglish'];  
        $row_array['value'] = $row['stateProvinceAbbreviation'];

        array_push($return_arr,$row_array);
    }

} / * Отбрасывание результатов состояния или провинции в виде массива в кодировке json.* / echo json_encode ($ return_arr);

Ответы [ 2 ]

0 голосов
/ 26 июля 2014

JQuery:

$("#stateProvince").autocomplete({ 
        source: function( request, response )
        {           
            $.ajax({ 
                url: "getStateProvince.php",
                data: {
                      term: request.term,   
                      country: $('input[name=country]:checked').val(),    
                },        
                type: "POST",  
                dataType: "json",
                error: function(x,y,z) {
                    alert(x+'\n'+y+'\n'+z);
                },
                success: function( data ) 
                {
                    response(data);//<== Change Here
                }
            });             
        },
        minLength: 2,
        select: function (event, ui){
            alert('|' + ui.item + '|2nd');
            $("#stateProvince").val(ui.item.value);
            return;
        }
    });

PHP:

while ($row = mysql_fetch_array($fetch, MYSQL_ASSOC)){            
    $row_array['label'] = $row['stateProvinceNameInEnglish'];  
    $row_array['value'] = $row['stateProvinceAbbreviation'];
    array_push($return_arr,$row_array);
}
echo json_encode($return_arr);
0 голосов
/ 18 марта 2013

Вы пробовали это так:

public function echoPhpArrayForAutocomplete(){
    foreach($yourArray as $row){
        $string .= '{';
    $string .= '"label" : "'.$row['stateProvinceNameInEnglish'].'",';
    $string .= '"value" : "'.$row['stateProvinceAbbreviation'].'",';
    $string .= '"additionlInfo" : "'.$row['additionalInfo'].'"';
    $string .= '},';
    }
    echo rtrim($string, ',');
}

Чем вы создаете свой массив таким образом в

<script>
    var arrayFromPhp = [ <?php echoPhpArrayForAutocomplete(); ?> ];
</script>

Чем вы сделаете свой ввод, чтобы показать выпадающий список на клавиатуре и дать ему желаемый массив, например:

$('#stateProvince').live('keyup.autocomplete',function(){
    $input = $(this);

$input.autocomplete({
    minLength: 0,
    source:  arrayFromPhp , // Array with object describing the keywords. Defined with php in the view file
     }).data( "autocomplete" )._renderItem = function( ul, item ) {
    return $( "<li></li>" )
    .data( "item.autocomplete", item )
    .append( "<a>"+item.label+"</a>" )
    .appendTo( ul )
    .bind();
  }
});

Вы можете даже поместить '71.Info 'в .append ("" + item.label + ""), как это .append («тег» + item.additionInfo + «закрыть тег»), и это покажет, что в раскрывающемся списке ... Я не знаю, помогал ли я, но я на работе, это больше всего времени, которое я могу сэкономить сейчас ... Если бы это не помогло, я был бы рад помочь позже. Привет.

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