2012-06-26 3 views
1

Я новичок в signalr. Я начал приложение MVC 4.0, из коробки, и подключил свой JavaScript-код signalr в представлении индексов. Когда я нажимаю кнопки Register или Login, signalr выдает ошибку JavaScript.SignalR throw JavaScript Ошибка

Unhandled exception at line 11, column 10700 in http://localhost:49172/Scripts/jquery.signalR- 0.5.1.min.js 

0x800a138f - Microsoft JScript runtime error: Unable to set value of the property 'src': object is null or undefined 

Любые предложения оценены.

EDIT:

Это степень моего кода:

$(function() {  
    var blasht = $.connection.blashtHub;  
    blasht.addMessage = function (message) { 
     $('#messages').append('<li>' + message + ''); 
    };  

    $("#blashtIt").click(function() { 
     var control = $('#blashtText'); 
     var control2 = $('#hiddenUserId'); 
     // Call the chat method on the server 
     blasht.send(control2.val(), control.val()); 
     control.val(''); 
    }); 

    blasht.updateTopTen = function (message) { 
     //add code to update the top user's list 
    }; 

    // Start the connection 
    $.connection.hub.start(); 
}); 

Как предположил я уронил мин и здесь, где происходит сбой, на frame.sc = SRC; линия.

reconnect: function (connection) { 
    var that = this; 
    window.setTimeout(function() { 
    var frame = connection.frame, 
    src = transportLogic.getUrl(connection, that.name, true) + "&frameId=" + connection.frameId; 
       connection.log("Upating iframe src to '" + src + "'."); 
       frame.src = src; 
      }, connection.reconnectDelay); 
     }, 

SignalR, а не я, ссылается на эту функцию повторного подключения. Очевидно, именно так он поддерживает соединение с сервером.

+1

Вы должны показать свой код, и, в частности, код, который устанавливает 'src' свойства, а также код, который получает любой объект, вы установка свойства 'src'. –

+0

Эта ошибка была исправлена, поэтому обновление SignalR :) – davidfowl

ответ

0

Из сообщения об ошибке, и без вашего предъявив любой код, я должен был бы догадаться, что у вас есть код, который выглядит следующим образом:

foo.src = someValue; 

... где foo является null или undefined. Который задает вопрос , почемуfoonull или undefined, но без дополнительного контекста сказать невозможно. Переход с помощью IE8 + «Инструменты разработчика F12» может помочь вам точно определить его.


(Update после кода была опубликована)

Я предполагаю, что линия вызывает ошибку в frame.src = src;. Переформатирование этот код с последовательным углублением:

reconnect: function (connection) { 
    var that = this; 
    window.setTimeout(function() { 
     var frame = connection.frame, 
      src = transportLogic.getUrl(connection, that.name, true) + "&frameId=" + connection.frameId; 
     connection.log("Upating iframe src to '" + src + "'."); 
     frame.src = src; // <=== Presumably this is the line failing 
    }, connection.reconnectDelay); 
}, 

Казалось бы, что по времени задержанный функция вызывается, connection.frame является null или undefined. Поэтому вам нужно выяснить, почему это так. Первое, что я хотел бы сделать, это проверить, является ли connection.framenull или undefined, когда вызывается reconnect, или если это происходит только позже, когда запущена функция задержки (например, что-то очистило ее, а если да, то почему).

+0

Thanks T.J.но ошибка не в моем коде, это в коде signalr. Я могу показать, как я ссылаюсь на файлы JavaScript, но больше нечего показывать. Я надеялся, что кто-то еще столкнулся с этим. –

+0

@ DannyEllisJr: Вы каким-то образом вызываете код SignalR? –

+0

Как было предложено выше, используйте F12/IE9, чтобы понять, почему вы не используете все библиотеки JavaScript, которые, по вашему мнению, вы или что-то еще происходит. И отбросьте .min для dev/debug. – RickAndMSFT

9

ошибка в текущей версии SignalR для «Вечно-кадр» реализации, который является тот, который использует IE9: https://github.com/SignalR/SignalR/issues/446

Обойти это, чтобы заставить SignalR не использовать Навсегда-Frame транспорт (https://github.com/SignalR/SignalR/wiki/SignalR-JS-Client). Меняем

$.connection.hub.start(); 

в

$.connection.hub.start({ transport: ['webSockets', 'serverSentEvents', 'longPolling'] }); 
+2

Да, эта ошибка исправлена. Так что просто обновите свой скрипт, и все будет хорошо. – davidfowl

Смежные вопросы