Javascript Typeahead/Hound Remote未返回数据

Javascript Typeahead/Hound Remote未返回数据,javascript,jquery,typeahead.js,twitter-typeahead,bloodhound,Javascript,Jquery,Typeahead.js,Twitter Typeahead,Bloodhound,我试图让typeahead(v0.10.5)/bloodhound绑定返回的JSON数据。不幸的是,我的建议窗口中没有显示任何内容(即,)。此外,我正在使用jqueryv2.0.3 对我的端点的调用成功。当我在Chrome中检查结果时,我看到一个格式正确的响应(即数据和内容类型)。Chrome的控制台窗口中没有出现错误。下面是一个JSON示例 我插入了调试器语句,但它们不会被击中 之所以有jqXHR.setRequestHeader(),是因为我进行了一些跨站点调用 Html代码 <div

我试图让typeahead(v0.10.5)/bloodhound绑定返回的JSON数据。不幸的是,我的建议窗口中没有显示任何内容(即,
)。此外,我正在使用jqueryv2.0.3

对我的端点的调用成功。当我在Chrome中检查结果时,我看到一个格式正确的响应(即数据和内容类型)。Chrome的控制台窗口中没有出现错误。下面是一个JSON示例

我插入了调试器语句,但它们不会被击中

之所以有jqXHR.setRequestHeader(),是因为我进行了一些跨站点调用

Html代码

<div id="remote">
    <input class="typeahead" type="text" placeholder="Prescription names">
</div>
如有任何想法,将不胜感激


Steve

我的代码出现的问题是
数据类型:“jsonp”
语句。我对代码进行了多次迭代。有一次,我引用了另一个域。这让我使用了jsonp数据类型

最后,我引用了一个不需要jsonp数据类型的相对Url


我将ajax调用更改为
数据类型:“json”
,它已被修复。

因此,当您输入搜索词时,您会在键入时看到对“GetPerscriptions”方法的“GET”请求?我会看到GET操作(通过Chrome Inspect)。正如上面的示例所示,我得到了一个有效的JSON响应。就好像结果进入了“以太”。当我启用调试器时;声明,他们永远不会明白。真奇怪。作为测试,请尝试使用完整URL而不是相对URL,然后重新启用调试器语句。#BenSmith,我能够让它工作。我将数据类型改为json。删除了jsonp,它工作了。很好,你让它工作了。但是,当您使用相对URL时,它不应该位于不同的域中?(从不同域访问数据时使用JSONP)。
<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>
[{"Name":"Drug1"}]