【问题标题】:JQuery button not firing and javascript not prompting for ASP.NET SignalR chat applicationJQuery 按钮未触发且 javascript 未提示 ASP.NET SignalR 聊天应用程序
【发布时间】:2025-12-13 23:35:01
【问题描述】:

我正在尝试在我的 ASP.NET 解决方案上创建用户之间的聊天应用程序。安装 SignalR 以帮助进行实时聊天。但是,使用 JavaScript 创建的按钮没有触发,浏览器也没有按预期提示输入用户名。

下面是我的代码。 Check out the design here

C# 代码隐藏:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Microsoft.AspNet.SignalR;

namespace Synergince
{
    // This is a class to handle the username and message entered by the  username
    public class ChatHub : Hub
    {
        public void Send(string name, string message)
        {
            // Call the broadcast method to update clients
            Clients.All.broadcastMessage(name, message);
        }
    }
}

源代码 - JavaScript

<div class="container">
<input type="text" id="message" />
<input type="button" id="sendmessage" value="Send" />
<input type="hidden"id="displayname" />
<ul id="discussion">
</ul>
</div>

<!--Script references -->
<script src="Scripts/jquery-1.4.1.min.js"></script>
<script src="Scripts/jquery.signalR-1.2.1.js"></script>
<script src="/signalr/hubs"></script>
<script type="text/javascript"">
    $(on('click',function () {
        var chat = $.connection.chatHub;
        chat.client.broadcastMessage = function (name, message) {
            var Name = $('<div />').text(name).html();
            var Msg = $('<div />').text(message).html();

            //add message to the page
            $('#discussion').append('<li><strong>' + encodedName + '</strong>:&nbsp;&nbsp;' + encodeMsg + '</li>');
        };

        //get username from user
        $('#displayname').val(prompt('Enter preferred alias:', ''));
        $('#message').focus();

        //start connection
        $.connection.hub.start().done(function () {
            $('#sendmessage').click(function () {

                //call send method on the hub
                chat.server.send($('#displayname').val(), $('#message').val());

                //clear textbox
                $('#message').val('').focus();
            });
        });
    });
</script>

【问题讨论】:

    标签: javascript c# jquery asp.net signalr


    【解决方案1】:

    尝试将其专门绑定到该按钮,并在绑定处理程序之前确保 the document is ready。如果文档未准备好,您的点击处理程序将永远不会激活。

        $( document ).ready(function() {
          $('#sendmessage').on('click', function() {
            console.log('test');
          });
        });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <input type="button" value="test" id="sendmessage"/>

    【讨论】:

    • $(.... 是一样的:*.com/questions/3528509/…
    • 请帮我用代码将函数绑定到代码。我对 JavaScript 比较陌生。您的帮助将大有帮助
    • @KelvinNkomo 抱歉,我发布的代码不正确。修复了 sn-p。如果之后仍有问题,请告诉我它在做什么。
    • 显示集线器的错误 404 并且无法读取未定义的属性“客户端”。我在浏览器上运行调试,这些是它显示的错误
    • 这些问题远远超出了这个问题的范围。如果您无法详细说明您尝试过的故障排除步骤,您应该尝试对这些问题进行一些特定的故障排除或开始一个新主题。