2014-01-14 3 views
0

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

$("#student-id").autocomplete({ 
    source: function(request, response) { 
     $.ajax({ 
      url: "ajax/ajax_admin.php?auto_student=" + $("#student-id").val(), 
      dataType:"json", 
      data: { 
       featureClass: "P", 
       style: "full", 
       maxRows: 12, 
       name_startsWith: request.term 
      }, 
      success: function(data) { 
       response($.map(data.students, function(item) { 
        return { 
         label: item.id +" , "+ item.name, 
         value: item.id 
        } 
       })); 
      } 
     }); 
    }, 
    minLength: 2, 
    open: function() { 
     $(this).removeClass("ui-corner-all").addClass("ui-corner-top"); 
    }, 
    close: function() { 
     $(this).removeClass("ui-corner-top").addClass("ui-corner-all"); 
    } 
}); 

PHP Script является:

public function load_ajax_student_list($val) 
{ 
    $val = "%".$val."%"; 
    $stmt = $this->conn->prepare("select * from student where studentAiubId like :value limit 0,5"); 
    $stmt->bindValue(':value', $val); 
    $stmt->execute(); 
    if($stmt->rowCount() < 1) 
     echo ""; 
    else 
    { 
     $result = $stmt->fetchAll(); 

     $output = array(); 
     foreach($result as $row) 
     { 
      if($row['mname']=="") 
       $name = $row['fname']." ".$row['lname']; 
      else 
       $name = $row['fname']." ".$row['mname']." ".$row['lname']; 
      $data["name"] = $name; 
      $data["id"] = $row['studentAiubId']; 
      $output["students"][] = $data; 
     } 
     echo json_encode($output);     
    } 
} 

Если вызов выглядит следующим образом: ajax/ajax_admin.php?auto_student=10
Полученные данные PHP script является:

{ 
    "students": [ 
     {"name":"Moh Mamun Sardar","id":"10-15987-1"}, 
     {"name":"Rehan Ahmed","id":"10-12451-2"}, 
     {"name":"Abid Hassan","id":"10-15412-1"}, 
     {"name":"Abir Islam","id":"10-11245-1"} 
    ] 
} 

Но ничего показывать на автозаполнении. Что я делаю неправильно?

+1

item.value должно быть item.name или item.id.Нет поля, называемого «значение при возврате json». –

+0

Я просто использовал это, прежде чем я разместил это. Извини, я виноват. редактирование –

+0

спасибо в любом случае. Я тоже использовал это. Не работал для меня. Теперь он внезапно работает. :) –

ответ

2

попробовать что-то вроде этого

$.map(data.students, function(item) { 
    return { 
    label: item.name, 
    value: item.id 
}); 

оно minlength не minLength см Корпус

+0

Но вот в поле зрения источника на их веб-сайте: http://jqueryui.com/autocomplete/#remote-jsonp -It's minLength –

+0

вы можете здесь, на этой скрипке, меняя обсадную колонну, посмотрите, работает ли она или нет http: // jsfiddle .net/8khSs/1/ –

+0

@MamunSardar может быть проблемой в fiddle.net –

0

Вы забыли свойство "appendTo". В этом Собственость вы должны указать селектор элемента, который вы хотите информацию, которая будет добавлена ​​к нравится этот

appendTo: '.class' or appendTo: '#id' 

Вы должны добавить это свойство для инициализации автозаполнения как родного брата источника и т.д .. .

Смежные вопросы