2014-02-21 4 views
0

Мой код отлично работает здесь http://jsfiddle.net/qv94t/7/. Но когда значение параметра исходит от php, функция работает неправильно. Я использовал ajax для генерации значения параметра, но он также имеет ту же ошибку, если я повторяю значение параметра на той же странице и не использую ajax.Autocomplete return blank, если текущего значения нет в списке

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

Мой Аякса

getajax.php

<?php 
if (isset($_POST["mainlist_id"])) { 
    $mysqli = new mysqli("localhost", "root", "", "2015"); 
    $main = $mysqli->real_escape_string($_POST["mainlist_id"]); 


$result1 = $mysqli->query("SELECT * FROM code WHERE cat_code='$main' GROUP BY item_code ORDER BY item"); 

    while($row = $result1->fetch_assoc()) 
    { 
    ?> 
    <option class="eachop" value ="<?php echo $row['item'];?>"><?php echo $row['item'];?></option>'; 
<?php 
    } 
    } 
?> 

А вот мой полный код, я забыл добавить свой Аякса и ниспадающее меню. Кто-нибудь поможет, пожалуйста?

ajax.php

<?php 
    $mysqli = new mysqli("localhost", "root", "", "2015"); 
    $combo = $mysqli->query("SELECT * FROM category GROUP BY cat_code ORDER BY id"); 
    $option = ''; 
    while($row = $combo->fetch_assoc()) 
     { 
     $option .= '<option value = "'.$row['cat_code'].'">'.$row['category'].'</option>'; 
     } 
    ?> 
<select id="main" name="main"> 
<option value="" disabled="disabled" selected="selected">Choose</option> 
<?php echo $option; ?> 
</select> 
<input list="languages" id="none"></input> 
<datalist id="languages" name="options"> 
    <option value=""></option> 
</datalist> 
<script type="text/javascript" src="jquery.js"></script> 
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.13/jquery-ui.min.js"></script> 
<input type="submit" name="submit" value="Submit" /> 

<script type="text/javascript"> 
$('#main').change(function(){ 
$.ajax({ 
url : 'getajax.php', 
data :{mainlist_id : $(this).val()}, 
dataType:'html', 
type:'POST', 
success:function(data){ 
$('#languages').html(data); 
} 
}); 
}); 
</script> 
<script> 
    var validOptions = []; 
    $("option").each(function() { 
     validOptions.push($(this).val()) 
    }); 
    previousValue = ""; 
    console.log(validOptions) 
    $('#none').autocomplete({ 
     autoFocus: true, 
     source: validOptions 
    }).keyup(function() { 
     var isValid = false; 
     for (i in validOptions) { 
      if (validOptions[i].toLowerCase().match(this.value.toLowerCase())) { 
       isValid = true; 
      } 
     } 
     if (!isValid) { 
      this.value = previousValue 
     } else { 
      previousValue = this.value; 
     } 
    }); 
</script> 
+0

как генерировать $ вариант в php ?? вы можете поделиться своим источником страницы при просмотре браузером –

+0

@CodingAnt Я обновил свой вопрос. На самом деле он генерируется ajax. Я просто пишу, как bcoz. У него такая же ошибка. – user3318208

+0

Я думаю, что ваш последний скрипт выполнен до завершения операции ajax. Тем не менее, трудно сказать, что не так, не видя, как вы генерируете '$ option' с ajax (я имею в виду, где, когда). – alalp

ответ

0

вы должны эхо значение только тогда, Аякса получить значение и отображается использование ниже код ....

<?php 
    if (isset($_POST["mainlist_id"])) { 
     $mysqli = new mysqli("localhost", "root", "", "2015"); 
     $main = $mysqli->real_escape_string($_POST["mainlist_id"]); 


    $result1 = $mysqli->query("SELECT * FROM code WHERE cat_code='$main' GROUP BY item_code ORDER BY item"); 

     while($row = $result1->fetch_assoc()) 
     { 
     echo "<option class=\"eachop\" value =\"".$row['item']."\">".$row['item']."</option>"; 
     } 
    } 
    ?> 
+0

Не работает ... – user3318208