2017-12-07 9 views
0

私がしようとしているのは、オートコンプリートの結果をユーザーが選択すると、ajaxコールがphpファイルに対して行われ、選択された項目、次に応答内にある詳細がテキストエリアボックスに表示されます。JQueryオートコンプリート:オートコンプリートから選択した項目の詳細を集めるためにajaxコールを作成する

$(document).ready(function() { 
    $("#bookSearch").autocomplete({ 
     source: "getBooks.php", 
     minLength: 3, 
     select: function() { 
      $.ajax({ 
       method: "get", 
       url: "getBooks2.php" 
      }) 
      .done(function(event, ui){ 
       $('#bookResults').val(ui.item.value + "\n"); 
      }) 
     } 
    }); 
}); 

これは現在のところ私のjavascriptです。エラーが発生しました

"$( '#bookResults')val(ui.item.value +" \ n ");"を参照してプロパティの値 'undefinedを読み取れません。

オートコンプリート機能にajax呼び出しを実装するにはどうすればよいですか?データ -

<div id="autoComplete"> 
    <h2 id="searchTitle">Book search</h2> 
    <input type="text" id="bookSearch" placeholder="Type in a book name"/> 
    <br> 
    <textarea rows="10" cols="40" id="bookResults" readonly></textarea> 
</div> 
+0

'#bookResults'用のHTMLは何ですか? – Jaime

+0

私はこれを追加しました –

答えて

0

the documentationにAcccording、コールバック関数(done())は唯一つのパラメータを有しています。これによると、

.done(function(event, ui) { 

が、私は解決策を見つけるために管理しているいくつかの工夫の後

.done(function(ui) { 
+0

私はこれを試しましたが、Chromeのデバッガ –

+0

に同じエラーが表示され、 'console.log(ui)'を追加しただけではどうなりますか?コンソールログは何ですか?これは基本的にオブジェクト 'ui'よりも' item'という名前のプロパティがないからです。 'item'は未定義ですので、jsは' undefined'からプロパティ 'value'を取得しようとします。 – entio

0

に置き換えてください:

$(document).ready(function() { 
    $("#bookSearch").autocomplete({ 
     source: "getBooks.php", 
     minLength: 3, 
     select: function(event, ui) { 
      $.ajax({ 
       method: "get", 
       url: "getBooks2.php", 
       data: {bookTitle: ui.item.value} 
      }) 
       .done(function(data) { 
        $('#bookResults').val(data); 
       }) 
     } 
    }); 
}); 
関連する問題