0

我試圖讓typeahead(v0.10.5)/ bloodhound綁定返回的JSON數據。不幸的是,我的建議窗口中沒有顯示任何內容(即,<input >)。另外,我正在使用jQuery v2.0.3。Typeahead/Bloodhound遠程不返回數據

對我的端點的呼叫是成功的。當我檢查Chrome中的結果時,我看到格式正確的響應(即數據和內容類型)。 Chrome的控制檯窗口中沒有出現錯誤。下面是一個JSON的例子。

我已經插入調試器;代碼中的語句,但它們沒有被擊中。

jqXHR.setRequestHeader()在那裏,因爲我正在做一些跨站點調用。

HTML代碼

<div id="remote"> 
    <input class="typeahead" type="text" placeholder="Prescription names"> 
</div> 

Javascript代碼

我離開//調試;語句來顯示我試圖添加斷點的位置。

<script type="text/javascript"> 
    $(document).ready(function() { 

     var prescriptions = new Bloodhound({ 
      datumTokenizer: function (d) { return Bloodhound.tokenizers.whitespace(d.value); }, 
      queryTokenizer: Bloodhound.tokenizers.whitespace, 

      remote: { 
       url: '/Prescription/GetPrescriptions/?searchTerm=%QUERY', 
       filter: function (prescriptions) { 
        //debugger; 
        return $.map(prescriptions, function (user) { 
         //debugger; 
         return { 
          value: user.Name 
         }; 
        }); 
       }, 
       ajax: { 
        type: 'GET', 
        dataType: 'jsonp', 
        beforeSend: function (jqXHR, settings) { 
         var authHeaders; 
         // pull apart jqXHR, set authHeaders to what it should be 
         //debugger; 
         jqXHR.setRequestHeader('Access-Control-Allow-Origin', '*'); 
        } 
       } 
      } 
     }); 
     // initialize the bloodhound suggestion engine 
     prescriptions.initialize(); 
     // instantiate the typeahead UI 
     $('#remote .typeahead').typeahead({ 
      minLength: 3, 
      highlight: true, 
      hint: true 
     }, 
      { 
       name: 'prescriptions', 
       displayKey: 'value', 
       source: prescriptions.ttAdapter() 
      }); 
    }); 

</script> 

JSON結果

[{"Name":"Drug1"}] 

任何想法,將不勝感激。

史蒂夫

+0

所以當你輸入一個搜索詞時,你會在輸入時看到「GetPerscriptions」方法的「GET」請求? – 2014-10-04 22:26:21

+0

我看到了GET操作(通過Chrome Inspect)。正如我上面的示例所示,我得到一個有效的JSON響應。就好像結果進入'以太'。當我啓用我的調試器時;聲明,他們從來沒有得到它。 – Steve 2014-10-05 00:06:33

+0

有多奇怪。作爲一個測試嘗試使用完整的URL而不是相對的,並重新啓用調試器語句。 – 2014-10-05 00:31:09

回答

0

我有我的代碼問題竟然是dataType: "jsonp"聲明。我經歷了許多我的代碼迭代。有一次,我引用了一個不同的域名。這導致我使用jsonp數據類型。

最後,我引用了一個不需要具有jsonp數據類型的Relative Url。

我將ajax調用更改爲dataType: "json",它被修復了。