[英]jQuery “Microsoft JScript runtime error: Object expected”
我有下面的代碼似乎根本不起作用:(我一直得到:
Microsoft JScript runtime error: Object expected
超時完成時似乎發生錯誤。 因此,如果我將超時提高10秒,則錯誤持續10秒。
我希望能夠在線異步更新朋友的數量。 該數字顯示如下html:
<a href="" id="showChat" >Friends online <strong id="friendsOnline">(?)</strong></a>
朋友部分是在第一次運行時設置的,但是當超時回調時,它不會再次觸發。 此外,我無法看到錯誤發生在哪一行,因為如果我想打破錯誤它只顯示“沒有源代碼”等。
下面的代碼是我正在使用的代碼。 謝謝!
<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>
嘗試這個:
window.setTimeout(UpdateFriendsOnline, 1000);
如果在全局命名空間中定義了該函數,那么您所使用的版本將起作用。
這樣,您將傳遞對該函數的本地引用,該函數將每秒調用一次。
編輯:
如果您需要在新請求開始之前取消之前的請求,您可以執行以下操作:
<script type="text/javascript">
$(document).ready(function() {
var request; // Stores XMLHTTPRequest object
UpdateFriendsOnline();
function UpdateFriendsOnline() {
if(request) request.abort(); // Abort current request if there is one
window.setTimeout(UpdateFriendsOnline, 1000);
// Store new XMLHTTPRequest object
request = $.get("/Account/GetFriendsOnline", function(data) {
request = null; // Clear request object upon success
$("#friendsOnline").html("(" + data + ")");
});
}
});
</script>
像這樣更改你的setTimeout()
:
window.setTimeout(UpdateFriendsOnline, 1000);
目前你的函數在document.ready
之外是不可用的,所以它不能作為全局函數訪問,它將它作為字符串傳遞嘗試訪問它。 作為一般規則,從來沒有過setTimeout()
一個字符串,如果你能避免它...它可能會導致這樣的情況下的問題,我想不出一個例子由它作為一個(如果可以避免的)制成更好串。
此外,我建議你在收到回復時觸發它,否則你將開始排隊重疊ajax請求,你可以通過調整你的函數來做到這一點:
function UpdateFriendsOnline() {
$.get("/Account/GetFriendsOnline", function(data) {
$("#friendsOnline").html("(" + data + ")");
window.setTimeout(UpdateFriendsOnline, 1000);
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.