Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查是否<;部门>;已使用数据url异步加载_Javascript_Jquery_Html_Ajax - Fatal编程技术网

Javascript 检查是否<;部门>;已使用数据url异步加载

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是否有子项,但它没有,即使我将检查放在上

我有一个包含以下内容的JSP:


如果文章中有任何可用数据,则将在
中填充,如下所示:

<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
     }


});