jquery iframe动态加载

时间:2014-02-21 21:25:25

标签: javascript jquery ajax iframe

我正在使用以下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");

来阻止它

请为我推荐一个很好的解决方案。感谢。

1 个答案:

答案 0 :(得分:0)

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

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

成功回调中。

如果你想在每次src更改时执行“load”处理程序,你可以这样做:

$(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变量没有明确定义/更改......