我有一个简单的Ajax调用,由于某种原因,我无法调用正确刷新数据。
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script>
var myFunction = $(document).ready(function(){
$("#div1").load("feeds.php");
});
setInterval(myFunction, 1000);
</script>
</head>
<body>
</body>
</html>
如果我在一段时间内切断了我的尝试,它会加载,但只加载一次。
$(document).ready(function(){
$("#div1").load("feeds.php");
});
我正在进行的任何想法?我对Ajax的理解正在进行中。
谢谢!
答案 0 :(得分:2)
$(document).ready(...)
返回一个jQuery对象 - 因此它不能用作setInterval的参数,它需要一个函数作为它的第一个参数
您的代码需要编写
$(document).ready(function() {
function myFunction(){
$("#div1").load("feeds.php");
}
setInterval(myFunction, 1000);
});
甚至
function myFunction(){
$("#div1").load("feeds.php");
}
$(document).ready(function() {
setInterval(myFunction, 1000);
});
这样,myFunction全局可见
您还需要一个id = div1的元素才能使此代码正常工作
所以:整个事情看起来像
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script>
function myFunction(){
$("#div1").load("feeds.php");
}
$(document).ready(function() {
setInterval(myFunction, 1000);
});
</script>
</head>
<body>
<div id="div1"></div>
</body>
</html>
答案 1 :(得分:1)
我建议使用以下内容而不是使用setInterval。
jQuery(function($){
//name the method to recursively call it, and invoke it immediately
(function refreshFeeds(failureCount){
//if the load failed 5 times in a row, stop trying, something is wrong
if (failureCount < 5){
$('#div1').load('feeds.php').then(function success(){
//request was good, reset failures and execute again after a second
setTimeout(function(){ refreshFeeds(0); }, 1000);
}, function error(){
//request was bad, increment the failure count and execute again after a second
setTimeout(function(){ refreshFeeds(failureCount + 1); }, 1000);
} );
} else {
console.log('Feeds failed to load 5 times. Terminating request loop.');
}
})(0);
});
答案 2 :(得分:0)
您正在$(document).ready()
事件上调用您的函数,该事件在加载DOM时只会被调用一次。你不需要那个部分。
var myFunction = function(){
$("#div1").load("feeds.php");
};
或者,更常见的语法
function myFunction(){
$("#div1").load("feeds.php");
};