2013-02-11 10 views
1

메신저 자바 스크립트 의 OOP에 상당히 새로운 점이 있습니다. 여기에 내 외부 js 파일이 있습니다.Javascript 메서드가 정의되지 않았습니다.

(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)); 

은이는 내가 trackUser 메소드를 호출하려고 내 방법

<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 받고 있어요 어떻게?

덕분에 사전에

답변

4

귀하의 기능은 익명의 범위 (function ($, connection) { }) 내부에 정의된다. 해당 범위 밖에서는 액세스 할 수 없습니다.

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

내가 그것을 정의했는지, signalr에서도 작동하도록 만드는 방법은 무엇입니까? – whebz

+0

나는 signalr에 너무 익숙하지 않지만, 정확히 당신이 가지고있는 것처럼 정확하게 정의한다면,'function trackUser'를'window.trackUser = function'으로 바꾸면 잘 작동한다고 가정합니다. –

0

전역 변수가 아니기 때문에 전역 변수가 정의되지 않았습니다. 익명 함수에 window.trackUser = trackUser을 추가하거나 함수 선언을 전역 범위로 이동하십시오.

관련 문제