我試圖讓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"}]
任何想法,將不勝感激。
史蒂夫
所以當你輸入一個搜索詞時,你會在輸入時看到「GetPerscriptions」方法的「GET」請求? – 2014-10-04 22:26:21
我看到了GET操作(通過Chrome Inspect)。正如我上面的示例所示,我得到一個有效的JSON響應。就好像結果進入'以太'。當我啓用我的調試器時;聲明,他們從來沒有得到它。 – Steve 2014-10-05 00:06:33
有多奇怪。作爲一個測試嘗試使用完整的URL而不是相對的,並重新啓用調試器語句。 – 2014-10-05 00:31:09