我一直在尝试弄清楚为什么刷新浏览器时下面的代码失败。例如,当首次访问该页面时,代码运行良好,但是刷新后,列表将在几秒钟内变为空白。经过几秒钟之后,我可以通过刷新屏幕再次查看内容。我执行了“检查元素”选项,它显示了以下错误
“未捕获的ReferenceError:jQuery11110765894684009254_1423584082469未定义”
这是什么意思?如果可以解决此问题,是否可以让屏幕在20或30秒后自动刷新?在我忘记之前,我正在使用的API密钥是在此处找到的临时密钥。
https://developer.wmata.com/Products
提前致谢。
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css">
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
</head>
<div data-role="page" id="page1">
<div data-role="header" data-position="fixed" data-tap-toggle="false">
<h1>My page</h1>
</div>
<div role="main">
<ul data-role="listview" data-inset="true" id="test1"></ul>
</div>
<div data-role="footer" data-position="fixed" data-tap-toggle="false">
<h1>My page footer</h1>
</div>
</div>
<script>
$.ajax({
url: 'https://api.wmata.com/StationPrediction.svc/json/GetPrediction/B01,F01?api_key=kfgpmgvfgacx98de9q3xazww',
dataType: 'jsonp',
}).success(function (data){
for(var i =0; i < data.Trains.length; i++)
{
$("#test1").append($("<li><a href='#'>Line: "+data.Trains[i].Line+" Cars:"+data.Trains[i].Car+" Destination:"+data.Trains[i].DestinationName+" Min: "+data.Trains[i].Min+"</a></li>"));
}
$("#test1").listview("refresh");
});
</script>
最佳答案
您应该将AJAX调用放在pagecreate事件中,以便它在正确的时间运行。
另外,不要一次添加一个列表项,而是用所有列表项构建一个字符串,然后在for循环之后将它们添加到DOM:
$(document).on("pagecreate", "#page1", function(){
$.ajax({
url: 'https://api.wmata.com/StationPrediction.svc/json/GetPrediction/B01,F01?api_key=kfgpmgvfgacx98de9q3xazww',
dataType: 'jsonp',
}).success(function (data){
var html = ''
for(var i =0; i < data.Trains.length; i++)
{
html += "<li><a href='#'>Line: "+data.Trains[i].Line+" Cars:"+data.Trains[i].Car+" Destination:"+data.Trains[i].DestinationName+" Min: "+data.Trains[i].Min+"</a></li>";
}
$("#test1").append(html).listview("refresh");
});
});
这将改善您的代码和性能,但仍然可能是临时api密钥受到速率限制,这导致了您的特定问题。
关于javascript - 刷新浏览器后,来自Ajax的Listview调用未更新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28436603/