Javascript 检查是否<;部门>;已使用数据url异步加载
我有一个包含以下内容的JSP:Javascript 检查是否<;部门>;已使用数据url异步加载,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,我有一个包含以下内容的JSP: 如果文章中有任何可用数据,则将在中填充,如下所示: <div class="articleInfo" data-url="${article.url}/infoSheet"> <div class="data">This is data</div> </div> 这是数据 如果没有可用数据,则保持原样 我试图用jQuery检查“articleInfo”div是否有子项,但它没有,即使我将检查放在上
如果文章中有任何可用数据,则将在
中填充,如下所示:
<div class="articleInfo" data-url="${article.url}/infoSheet">
<div class="data">This is data</div>
</div>
这是数据
如果没有可用数据,则
保持原样
我试图用jQuery检查“articleInfo”div是否有子项,但它没有,即使我将检查放在上次加载的javascript文件的$(document).ready(function(){}
的末尾。我想这是由于数据是如何使用
的数据url
属性加载的
如何检查是否已填充任何数据?您可以与like一起使用
如果您的articleInfo
div是异步填充的,那么您需要在ajax回调中检查它的数据,比如
$.ajax({
url:....
data:...
success:function(data){
if(!data){
// this div url has no data
}
}
});
好的,我假设您没有对这个ajax下载人员进行回调,并且这个操作没有留下任何类似ajax的数据属性的迹象。如果是这样的话-在DOM中没有回调和签名,那么我的建议是执行setInterval,并在其中检查divs是否有数据:
var checkedCount=0;
var maxCheckCount=5;//we check 5 times
var checkInterval=setInterval(function(){
var $divs=$('div[data-url]');
$divs.each(function(index){
if ( $(this).find("div.data") ){
//our div has data
}else{
//our div has no data ( maybe will be downloaded? )
}
});
checkedCount++;
if (checkedCount==maxCheckCount)
clearInterval(checkInterval);
},1000); //check every 1 sec
所以我们检查了5次,一对一(根据您的需要定制)。这不是完美的解决方案,如果ajax很长,那么它将在ajax结束之前停止工作
您还可以查看DOM中的更改:
$('div[data-url]').bind('DOMSubtreeModified', function(e) {
if ($(this).find("div.data")){
//div has data
}else{
//div has no data but in this situation this never calls
}
});
如何以及何时加载该内容?我不是一个JSP人员,但异步加载该内容的是什么?我想,这与JSP无关,但与客户端脚本(ajax?!)有关。您需要在ajax请求的回调函数中进行加载(我猜JSP在数据url上使用ajax)这将在任何ajax请求完成之前触发。顺便说一句,我没有否决它,尽管我正在更新异步调用的答案。
var checkedCount=0;
var maxCheckCount=5;//we check 5 times
var checkInterval=setInterval(function(){
var $divs=$('div[data-url]');
$divs.each(function(index){
if ( $(this).find("div.data") ){
//our div has data
}else{
//our div has no data ( maybe will be downloaded? )
}
});
checkedCount++;
if (checkedCount==maxCheckCount)
clearInterval(checkInterval);
},1000); //check every 1 sec
$('div[data-url]').bind('DOMSubtreeModified', function(e) {
if ($(this).find("div.data")){
//div has data
}else{
//div has no data but in this situation this never calls
}
});