Osk*_*lin 7 javascript c# jquery
我有下面的代码似乎根本不起作用:(我一直得到:
Microsoft JScript runtime error: Object expected
Run Code Online (Sandbox Code Playgroud)
超时完成时似乎发生错误.因此,如果我将超时提高10秒,则错误持续10秒.
我希望能够在线异步更新朋友的数量.该数字显示如下html:
<a href="" id="showChat" >Friends online <strong id="friendsOnline">(?)</strong></a>
Run Code Online (Sandbox Code Playgroud)
朋友部分是在第一次运行时设置的,但是当超时回调时,它不会再次触发.此外,我无法看到错误发生在哪一行,因为如果我想打破错误它只显示"没有源代码"等.
下面的代码是我正在使用的代码.谢谢!
<script src="http://ajax.microsoft.com/ajax/jquery/jquery-1.3.2.js" type="text/javascript"></script>
<script src='/Scripts/MicrosoftAjax.js' type="text/javascript"></script>
<script src='/Scripts/MicrosoftMvcAjax.js' type="text/javascript"></script>
<script src='/Scripts/jquery.autocomplete.js' type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
UpdateFriendsOnline();
function UpdateFriendsOnline() {
window.setTimeout("UpdateFriendsOnline()", 1000);
$.get("/Account/GetFriendsOnline", function(data) {
$("#friendsOnline").html("(" + data + ")");
});
}
});
</script>
Run Code Online (Sandbox Code Playgroud)
setTimeout()像这样改变你的:
window.setTimeout(UpdateFriendsOnline, 1000);
Run Code Online (Sandbox Code Playgroud)
目前,您的函数在 之外不可用document.ready,因此无法作为全局函数访问,将其作为字符串传递正在尝试访问它。作为一般规则,如果可以避免的话,永远不要传递字符串setTimeout()......它可能会导致像这种情况这样的问题,而且我想不出一个例子(如果可以避免的话)通过它是一个字符串而变得更好。
另外,我建议在收到响应时触发它,否则您将开始排队重叠的 ajax 请求,您可以通过将函数调整为:
function UpdateFriendsOnline() {
$.get("/Account/GetFriendsOnline", function(data) {
$("#friendsOnline").html("(" + data + ")");
window.setTimeout(UpdateFriendsOnline, 1000);
});
}
Run Code Online (Sandbox Code Playgroud)