Javascript方法未定义

Javascript方法未定义,javascript,signalr,Javascript,Signalr,我对javascript中的OOP很陌生 这是我的外部js文件 (function ($, connection) { "use strict"; var conn = connection.serverHub; connection.hub.url = 'http://localhost:51283/signalr'; function trackUser(username, roleid, sessionid, ipaddress) { var page = docume

我对javascript中的OOP很陌生 这是我的外部js文件

(function ($, connection) {    
"use strict";

var conn = connection.serverHub;
connection.hub.url = 'http://localhost:51283/signalr';

function trackUser(username, roleid, sessionid, ipaddress) {
    var page = document.location.pathname;        
    conn.server.joinUser(username, roleid, ipaddress, page, sessionid).done();
}

// signalr client method
conn.client.receivedNotification = function (item) {
    alert(item);
    conn.server.notifiedUser().done();
};
$(function () {
    connection.hub.start().done(function () {
        trackUser('<%= session("USERNAME")%>', '<%= session("ROLE")%>', '<%= Session.SessionID%>', '<%=Request.UserHostAddress%>');//da attivare solo in produzione
    }).fail(function () { alert("failed"); });
}); }(jQuery, $.connection));
(函数($,连接){
“严格使用”;
var conn=connection.serverHub;
connection.hub.url=http://localhost:51283/signalr';
函数trackUser(用户名、角色ID、会话ID、IP地址){
var page=document.location.pathname;
joinUser(用户名、roleid、ipaddress、页面、sessionid).done();
}
//信号客户端方法
conn.client.receivedNotification=功能(项目){
警报(项目);
conn.server.notifiedUser().done();
};
$(函数(){
connection.hub.start().done(函数(){
trackUser('','','');///produzione中的达阿提瓦雷索洛
}).fail(函数(){alert(“failed”);});
});}(jQuery,$.connection));
这就是我如何称呼我的方法

<body>
<script src="http://localhost:51283/Scripts/jquery-1.9.1.min.js"></script>
<script src="http://localhost:51283/Scripts/jquery.signalR-1.0.0-rc2.min.js"></script>
<script src="http://localhost:51283/signalr/hubs"></script>
<script src="myexternaljs.js"></script>
<script>
    trackUser('<%= session("USERNAME")%>', '<%= session("ROLE")%>', '<%= Session.SessionID%>', '<%=Request.UserHostAddress%>');//da attivare solo in produzione
</script>
</body>

trackUser('','','')//《普罗杜齐奥尼》中的达阿提瓦雷·索洛
当我试图调用trackUser方法时,我得到了未定义的trackUser

我哪里做错了


提前感谢

您的函数是在匿名范围内定义的(
函数($,连接){}
)。在该范围之外将无法访问它。您可以创建一个全局变量,并将函数分配给该变量:

window.trackUser = function(username, roleid, sessionid, ipaddress) {
   ...
};

您的函数是在匿名范围内定义的(
函数($,连接){}
)。在该范围之外将无法访问它。您可以创建一个全局变量,并将函数分配给该变量:

window.trackUser = function(username, roleid, sessionid, ipaddress) {
   ...
};

它未定义,因为它不在全局范围内。在匿名函数中添加
window.trackUser=trackUser
,或者将函数声明移动到全局范围。

它未定义,因为它不在全局范围内。要么在匿名函数中添加
window.trackUser=trackUser
,要么将函数声明移动到全局范围。

我对signalr不太熟悉,但我认为如果您完全按照您的定义来定义它,它会工作得很好,仅将
function trackUser
替换为
window.trackUser=function
。我对signar不太熟悉,但我认为如果您完全按照您的定义来定义它,它会工作得很好,只需将
function trackUser
替换为
window.trackUser=function