我有一个简单的javascript,它每400ms从Web服务器获取一些JSON数据,并用内容更新各种div——它在100%调用中的99次都能正常工作。但是,持有json的Web服务器偶尔不会响应、不可用或类似情况。如果它与页面加载同时发生,我会得到一个"无法打开流:HTTP请求失败!HTTP/1.1 404在C:''wamp''www''test''index.php中找不到",并且必须重新加载页面。如果页面是在从json服务器退出之前加载的,则div不会更新,而是在服务器再次响应后更新。
我需要找到一种方法来避免用户界面(php页面)上出现"无法打开流:HTTP请求fai…"消息,并随时用"Connection OK"或"Connection down"更新div。
我一直在研究getJSON的异常处理,但找不到正确的方法。
我的脚本:
<script src='http://code.jquery.com/jquery-latest.js'></script>
<script type="text/javascript">
$.ajaxSetup ({
cache: false
});
setInterval(function(){
$.getJSON('http://myurl.com/test/jsonreplica.php', function(data) {
data_loaded=data;
var len_data_loaded = data_loaded['Devices'].length;
var len_data_current = data_current['Devices'].length;
// UPDATE ALL MY DIV's
}
});
}, 400);
</script>
所有jQuery AJAX函数都返回一个jqXHR
promise,它具有类似.done()
和.error()
的方法。所以你可以写:
$.getJSON('URL', function(data) {
// Do stuff
}).error(function() {
// Deal with error
});