首页 文章

jQuery Ajax .html()就绪请求

提问于
浏览
0

我使用Jquery Ajax加载内容并使用.html()方法将其插入到div中 . 之后我需要获取加载内容的高度来计算更多大小,但似乎内容最终没有被加载 . 当我试图获得它的高度它有时工作正常但另一次我得到一个小高度值 .

Ajax加载功能:

function loadPage(url,data){
    jQuery.ajax({
        'url': url,
        'dataType': 'json',
        'data': data,
        success: function(data,s,xhdr){ // data, status
                        if(!data){ return false };
            pagenav(data);
        }
    });
    return false;}

function pagenav(data){
    if(!data){ return false };
    if(typeof(data.content)=="object"){
        for(var i in data.content){
            if(data.content[i].target_id == 'panelMain'){
                        jQuery('#panelMain').html(data.content[0].content);
                            setTimeout(function(){ 
                                onLoad();
                            },0);

            }else{
                jQuery('#panelFooter').html(data.content[1].content);
            }
        }
    }
    }

onLoad函数处理整个高度的事情 . 我试图在操作新元素之前使用setTimeout方法完全填充DOM . 将超时设置为更大的值(比方说500)对我来说很好,但我认为这不是正确的方法 .

提前致谢

1 回答

  • 0

    您的代码有几个问题,因为我可以看到它......

    首先,当数据计算结果为false时,在 pagenav() 中返回一些内容,这与您在ajax成功回调中已经执行的操作相同 .

    其次,您通过 data.content 将密钥放在变量 i 中 . 在该for循环中,检查 data.content 中的当前键是否具有等于'panelMain'的属性 target_id . 如果这是真的你以某种方式假设w / e进入面板main将在 data.content[0] =>我相信这应该 data.content[i] 不?

    您的 onLoad() 调用在for循环中,因此可能会多次调用或在for循环结束之前调用....

    这是我认为你想做的事情:

    function loadPage(url, data) {
        jQuery.ajax({
            'url': url,
            'dataType': 'json',
            'data': data,
            success: function(data, s, xhdr) { // data, status
                if (!data) {
                    return false
                };
    
                pagenav(data);
            }
        });
        return false; // mind you this function will always return false since ajax calls are async
    }
    
    function pagenav(data) {
        if (typeof(data.content) == "object") {
            for (var i in data.content) {
                jQuery('#' + data.content[i].target_id).html(data.content[i].content);
            }
    
            onLoad();
        }
    }
    

相关问题