在SignalR中使用Typeahead - javascript

我试图在我的SignalR实现中使用Typeahead。
发生了什么事,是我的集线器被命中并返回了值,但是在result之后的.done()undifined。我不知道为什么?

Java脚本

$(function () {

    var search = $.connection.searchHub;
    $.connection.hub.start().done(function () {

        $('#searchBar').typeahead(null, {
            minLength: 2,

            // begin source      
            source: function (query, process) {
                var suggestions = [];// my callback value


                search.server.search(query)
                        .done(function (result) {
                            console.log(result);
                            $.each(result, function () {
                                console.log(result);
                                suggestions.push(this);
                                process(suggestions);//process is a callback method
                            });
                        }).fail(function (error) {
                            console.log(error);
                            process([]);//process is a callback method, don't know if this is necessary here, but will produce no suggestions
                        });
            }
        });

    });

毂:

[HubName("searchHub")]
    public class SearchHub : Hub
    {
        public async Task Search(string query)
        {
            api = new MovieApi();
            var result = await api.Search(query);

            if (result.results != null)
            {
                Clients.Client(Context.ConnectionId).results(result.results[0].title);
            }
            else
            {
                Clients.Client(Context.ConnectionId).noResults("There are no search results!");
            }

        }
    }

参考方案

您的搜索方法不返回任何内容,因此其未定义并不奇怪。您需要更改为Task<T>并返回一些内容

我也看不到您正在订阅resultsnoResults?喜欢

search.client.results = function(result) {
   console.log(result);
};

编辑:使用SIgnalR对此也很奇怪,带有请求/响应的标准REST应该很好

获取JavaScript值到C#字符串 - javascript

                        是否可以在C#中执行类似的操作?该值为“ 10/05/2014”string jsValue = javascript("$('#EstimatedStartDate').val()"); 参考方案 您能否更详细地阐明您要做什么。看来您正在尝试从javascript(客户…

.NET C#Webbrowser填充输入,不带ID或类名 - javascript

我需要在网络浏览器中填写一个输入,但这不起作用。我认为必须使用name属性来完成,但是怎么做呢?foreach (HtmlElement login in webBrowser1.Document.GetElementsByTagName("input")) { if (login.GetAttribute("name"…

ASP.NET-如何更改JSON序列化的方式? - javascript

我正在使用ASP.NET通过以下查询返回Json文件:public ActionResult getTransactionTotals(int itemID) { DBEntities db = new DBEntities(); var query = from trans in db.Transactions // Linq query removed …

在JavaScript中运行方法C# - javascript

打扰一下,我有这种C#asp方法。受保护的无效btnSave_Click(对象发送者,EventArgs e)有谁知道我该如何发送脚本给您?可以办到?。 javascript大神给出的解决方案 是的,那可以做到。为此,您在.aspx.cs页中创建了函数,然后单击保存按钮上的代码将其复制到函数中,然后执行以下步骤。//Call cs method from J…

从php文件运行命令行程序 - javascript

我想从php文件执行任何命令。我有一个nodejs文件,当我给出命令执行某件事时。它工作正常。即abc.js参数在终端上可以正常工作并执行一些任务但是,我想从运行我的命令的php文件中执行相同的任务。我尝试了不起作用的exec('filename arguments')。如果我给exec(ls -l)给出输出。请让我知道您的建议。谢谢 参考方案 我认为您必须…