【问题标题】:jquery iframe load dynamicallyjquery iframe 动态加载
【发布时间】:2014-02-21 21:25:24
【问题描述】:

我正在使用以下 jquery 脚本在成功的 ajax 请求后加载另一个 url。

$(document).ready(function() {
    var $loaded = $("#siteloader").data('loaded');
    if($loaded == false){
        $("#siteloader").load(function (){
            if(ad_id != undefined){ 
                var req_url = base_url+'ajax/saveclick/'+ad_id+'/';
                var preloader = $('#preloader');
                var reqloader = $('#reqloader');

                $.ajax({
                    url: req_url,
                    type: 'GET',
                    beforeSend: function() {
                        $(preloader).show();
                        $('#adloading').remove();
                    },
                    complete: function() {
                        $(preloader).hide();
                    },
                    success: function(result) {
                        $(reqloader).html(result);
                        $("#siteloader").data("loaded", "true");
                        $("#siteloader").attr("src", base_url+'userpanel/cpa/'+ad_id+'/');
                    }
                });
            }
            else{
                $('#reqloader').html('<span class="text-danger">Invalid Approach!</span>');
            }

        });
    }
});

<iframe src="remote_url" id="siteloader"></iframe>

我不想在 iframe 上更改 src 后再次运行 ajax,我也尝试通过 $("#siteloader").data("loaded", "true"); 停止它

请为此建议我一个好的解决方案。谢谢。

【问题讨论】:

    标签: javascript jquery ajax iframe


    【解决方案1】:

    如果您只想执行一次“加载”处理程序
    只需添加一行

    $("#siteloader").unbind('load');
    

    成功回调中。

    如果您希望在每次 src 更改时执行“加载”处理程序,您可以这样做:

    $(document).ready(function () {
            $("#siteloader").load(function () {
                // Move the test in the event Handler ...
                var $loaded = $("#siteloader").data('loaded');
                if ($loaded == false) {
                    if (ad_id != undefined) {
                        var req_url = base_url + 'ajax/saveclick/' + ad_id + '/';
                        var preloader = $('#preloader');
                        var reqloader = $('#reqloader');
    
                        $.ajax({
                            url: req_url,
                            type: 'GET',
                            beforeSend: function () {
                                $(preloader).show();
                                $('#adloading').remove();
                            },
                            complete: function () {
                                $(preloader).hide();
                            },
                            success: function (result) {
                                $(reqloader).html(result);
                                $("#siteloader").data("loaded", "true");
                                $("#siteloader").attr("src", base_url + 'userpanel/cpa/' + ad_id + '/');
                            }
                        });
                    }
                    else {
                        $('#reqloader').html('<span class="text-danger">Invalid Approach!</span>');
                    }
    
                }
            });
        });
    

    也许您的 ad_id 变量没有很好地定义/更改...

    【讨论】:

    • @seoppc 如果问题现在有效,请标记问题已解决
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    相关资源
    最近更新 更多