我在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));
这就是我调用方法的方法
<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未定义
我做错了什么?
提前致谢
答案 0 :(得分:4)
您的函数是在匿名范围(function ($, connection) { }
)内定义的。它不会在该范围之外访问。您可以创建一个全局变量,并将您的函数分配给:
window.trackUser = function(username, roleid, sessionid, ipaddress) {
...
};
答案 1 :(得分:0)
未定义,因为它不在全球范围内。在匿名函数中添加window.trackUser = trackUser
或将函数声明移动到全局范围。