$ .getJSON + setInterval

时间:2017-12-02 22:46:30

标签: ajax jsonp setinterval getjson

我通过以下代码从JSONP文件中获取一些数据:

$.getJSON('http://static.eska.pl/m/playlist/channel-108.jsonp?callback=?' );
function jsonp(data) { 
document.getElementById("artist").innerHTML = data[0].artists[0].name;
document.getElementById("title").innerHTML = data[0].name;
 };
<!DOCTYPE html>
<head>
    <title>JSONP EskaRock </title>
	<script src="http://code.jquery.com/jquery-latest.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
</head>

<body>
<div id="artist"></div>
<div id="title"></div>
</body>
</html>

它可以工作,但我需要每10秒刷新一次数据。我使用setInterval函数,但控制台FireFox返回错误“ReferenceError:jsonp未定义 (... channel-108.jsonp:1:1)“。我的代码使用setInterval:

setInterval( function () {
$.getJSON('http://static.eska.pl/m/playlist/channel-108.jsonp?callback=?' );
function jsonp(data) { 
document.getElementById("artist").innerHTML = data[0].artists[0].name;
document.getElementById("title").innerHTML = data[0].name;
};
}, 10000)
<!DOCTYPE html>
<head>
 <title>JSONP EskaRock </title>
 <script src="http://code.jquery.com/jquery-latest.js"></script>
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
</head>

<body>
<div id="artist"></div>
<div id="title"></div>
</body>

</html>

问题出在哪里?

1 个答案:

答案 0 :(得分:1)

您正在声明setInterval内部的功能将其移到外面并且可以正常工作

&#13;
&#13;
function jsonp(data) {
  document.getElementById("artist").innerHTML = data[0].artists[0].name;
  document.getElementById("title").innerHTML = data[0].name;
};
setInterval(function() {
  $.getJSON('http://static.eska.pl/m/playlist/channel-108.jsonp?callback=?');

}, 10000)
&#13;
<!DOCTYPE html>

<head>
  <title>JSONP EskaRock </title>
  <script src="http://code.jquery.com/jquery-latest.js"></script>

</head>

<body>
  <div id="artist"></div>
  <div id="title"></div>
</body>
&#13;
&#13;
&#13;