2013-05-08 80 views
0

我想創建一個代碼,每10秒重新加載一部分頁面,如果它無法重新加載(因爲連接問題),那麼它會播放聲音。如果頁面沒有加載,則執行代碼

這樣的事情可能使用ajax和如何?我之前在網絡聊天中看到過這種功能,但從未遇到過它的代碼。

+0

你問關於ajax請求失敗,或者如果實際頁面加載失敗? – 2013-05-08 00:34:52

+0

沒有不是最初的頁面,但ajax請求失敗。然而,如果存在連接問題,則ajax函數失敗非常重要。 – 2013-05-08 00:37:59

+1

您是否使用jQuery等任何Javascript框架,或者您是否在使用'XmlHttpRequest'進行此操作? – 2013-05-08 00:42:47

回答

2

在服務器上播放聲音,只要嘗試使用setInterval函數:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
    <head> 
     <meta http-equiv="content-type" content="text/html; charset=windows-1250"> 
     <title>Test</title> 
     <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" type="text/css"> 
     <script src="http://code.jquery.com/jquery-1.9.1.js" type="text/javascript" language="JavaScript"></script> 
     <style type="text/css"> 
     <!-- 
      .square { 
       background-color: #AAAAAA; 
       width: 250px; 
       height: 100px; 
      } 
     //--> 
     </style> 
<script type="text/javascript" language="JavaScript"> 
    $(document).on('ready',function(){ 
    setInterval(updateDiv,10000); 
    }); 

    function updateDiv(){ 
    $.ajax({ 
     url: 'getContent.php', 
     success: function(data){ 
     $('.square').html(data); 
     }, 
     error: function(){ 
     //Code to play a sound 
     $('.square').html('<span style="color:red">Connection problems</span>'); 
     } 
    }); 
    } 
</script> 
</head> 
<body> 
    <h1>The next div will be updated every 10 seconds</h1> 
    <div class="square"> 
    Hello 
    </div> 
</body> 
</html> 

而且PHP腳本:

<?php 
    echo "Updated value --> " . rand(); 
?> 

要測試,請嘗試重命名php腳本(模擬連接問題)並重命名爲原始名稱(getContent.php)以再次測試正確的情況。希望這可以幫助。

+0

很好的答案,我會在一瞬間測試一下,只是一個最後的要求。你能告訴我一個簡單的代碼來播放一個簡短的WAV文件嗎?也許你可以用這個代碼更新你的答案? – 2013-05-08 01:36:15

+0

@GaryWoods我發現ogg格式是針對網頁聲音的跨瀏覽器支持的最佳選擇。如果你不需要跨瀏覽器支持,你可能會用wav很好,但ogg是我相信的html5標準。 – FloatingCoder 2013-05-08 02:31:28

+0

這是一個很好的答案,接受! – 2013-05-08 09:41:40

1

使用jQuery,您可以添加處理程序運行失敗...

$.ajax({ 
    dataType: "json", 
    url: "myurl.com" 
}).done(function(data) { 
    //do what you want when it's all good 
}).fail(function() { 
    //do what you want when the call fails 
}); 

或者你也可以這樣來做...

$.ajax({ 
    type: "post", 
    url: "/SomeController/SomeAction", 
    success: function (data, text) { 
     //do what you want when it's all good 
    }, 
    error: function (request, status, error) { 
     //do what you want when the call fails 
    } 
}); 

而且每個請求,這裏是一個jsfiddle ,它每2秒調用一次服務,或者使用返回日期的URL,或者使用會失敗的錯誤URL來模仿失敗的服務器。

UPDATE:我修改的jsfiddle作爲聲音仍然是對:)

+1

你能否給你的答案添加一個jsfiddle.net來證明這一點?理想情況下,刷新每10秒刷新一次,並在刷新失敗時播放聲音。 – 2013-05-08 00:58:39