2013-06-07 1 views
1

2 차원 배열을 Jquery 자동 완성 입력에 전달하려고합니다. 지금2 차원 배열을 JQuery 자동 완성에 전달하려고 시도합니다.

public function autocompleteAction() 
{ 

    $this->_helper->layout()->disableLayout(); 
    $this->getHelper('viewRenderer')->setNoRender(); 

    if (isset($_GET['term'])) { 
     $q = htmlentities($_GET['term']); 
     try { 
      $bdd = new PDO('mysql:host=' . $config->app->url . ';dbname=' . $config->resources->db->dbname, 'root', ''); 
      $bdd->exec('SET CHARACTER SET utf8'); 
     } catch (Exception $e) { 
      exit('Impossible de se connecter à la base de données.'); 
     } 
     $requete = "SELECT p.nom,p.winjob_com,p.id_projet,c.titre FROM portail_projet p INNER JOIN portail_client c on c.id_client = p.id_client WHERE p.nom LIKE '%" . $q . "%' OR c.titre LIKE '%" . $q . "%' OR p.winjob_com LIKE '%" . $q . "%' AND p.status = 0"; 
     $resultat = $bdd->query($requete) or die(print_r($bdd->errorInfo())); 

     $array = array(
     ); 
     $i = 0; 

     while ($donnee = $resultat->fetch()) { // on effectue une boucle pour obtenir les données 
      $array[$i][0] = $donnee['winjob_com'] . " - " . $donnee['titre'] . " : " . $donnee['nom'] . "\n"; 
      $array[$i][1] = $donnee['id_projet']; 
      $i++; 
     } 

     echo json_encode($array); // il n'y a plus qu'à convertir en JSON 
    } 
} 

그리고 :

http://hpics.li/6221d85

그리고 내가 배열을 만드는 데 사용하고 코드 블록 (사진은 개똥 벌레와 함께있어) :

이처럼 내 탭 모습입니다 JS 부분 :

$("#autoCompleteProjets").autocomplete({ 
    source: "/index/autocomplete",  
    minLength: 1, 
    select: function(event, ui) { 
     console.log( 
      "Selected: " + ui.item.value + " aka " + ui.item.label 

     ); 
    } 
}); 

미리 도움을 주셔서 감사합니다.

+0

무엇이 오류입니까? 너 무슨 짓을 한거야? –

+0

오류가 여기에있는 것 같습니다 : echo json_encode ($ array); 내가 명확한 메시지를받지 못한다해도 – BYU

+0

것 같니? 콘솔에서 xhr 로그를 확인하면 응답에 오류가 있습니까? 아니면 텍스트가없는 200? –

답변

1

좋아요. jquery의 자동 완성 메서드 인 documentation을 확인했는데 문제가 발생했다고 생각합니다.

public function autocompleteAction() { 
    // ... 
    if (isset($_GET['term'])) { 
    // ... 

     $options = array(); 

     while ($donnee = $resultat->fetch()) { // on effectue une boucle pour obtenir les données 
      $temp = array('id' => $donnee['id_projet'], 
          'label' => $donnee['winjob_com'] . " - " . $donnee['titre'] . " : " . $donnee['nom'], // <-- this the label?? 
          'value' => $donnee['id_projet']); 

      // add option to options array 
      $options[] = $temp; 
     } 

     die(json_encode($options)); // return JSON 
    } 
} 
:

[{ 
    id: "id_of_this_item", 
    label: "label of option", 
    value: "value for the field" 
}, ... ] 

업데이트이 당신의 PHP가 올바른 형식의 응답을하려면 다음 JSON은 특정 형식이어야합니다 반환 (해당 페이지의 예제의 XHR 반응을보고 후)

행운을 빕니다.

추신 : 서버에 대한 요청을 줄이기 위해 minLength: 1, 줄을 제거합니다.

+0

고맙습니다. 이미 한 가지를 선택하면 ID 대신 레이블이 표시됩니다. 내가 왜 "select"섹션에만이 이유가 있는지 이해할 수 없다. console.log ( "Selected :"+ ui.item.label + "aka"+ ui.item.value 어쨌든 고맙습니다. 당신의 노력 – BYU

+0

해결! 감사합니다 다시 – BYU

+0

괜찮습니다! :-) –

관련 문제