url - ajax loaded but no JS

时间:2012-07-22 作者:ad2003

我有这个url来调用分类法。php,通过按下面的代码按钮显示过滤后的帖子:

http://myurl/?meta_key=post_views_count&orderby=meta_value&order=ASC
这是我正在使用的JS:

    $(document).ready(function(){
$.ajaxSetup({cache:false});
$("#hot a").click(function(){

    var post_id = $(this).attr("rel")
    $(".postbox_wrapper").html(\'<span class="filter_posts"><img src="<?php bloginfo (\'template_directory\'); ?>/images/287.gif"></span>\');
    $(".postbox_wrapper").load(jQuery(this).attr("href") + " .postbox_wrapper")
    return false;
});
});

正如我所希望的那样,这个调用工作得很好——内容显示出来时没有页面重新加载。

问题是,JS没有加载到ajaxloaded页面上,我真的无法加载它。我在stackexchange上找到了许多版本,但都没有成功。

例如,需要将其加载到ajaxed调用中:http://myname.disqus.com/count.js?ver=3.4.1

有人有主意吗?

非常感谢你。

公元

2 个回复
最合适的回答,由SO网友:xsonic 整理而成

在您的complete 的回调load 功能:

$(".postbox_wrapper").load(
    jQuery(this).attr("href") + " .postbox_wrapper",
    function(response, status, xhr) { // complete callback

        // create a empty div
        var div = document.createElement(\'div\');
        // fill div with response
        div.innerHTML = response;
        // take correct part of the response
        var ref = $($(div).find(\'.postbox_wrapper\').html());
        // filter response for script tags
        ref.filter(\'script\').each(function () {
            // execute the scripts
            $.globalEval(this.text || this.textContent || this.innerHTML || \'\');
        });
    }
});
我还建议您在通话失败时添加一条错误消息。请参见上的示例2http://api.jquery.com/load/

我很难弄明白,我尝试了stackoverflow上找到的所有答案。最后我找到了这个德国网站。在那里,您可以看到完整的代码:http://labor.99grad.de/flash/agentur/wiesbaden/jquery/script-tag-bei-ajax-response-ausfuhren/

SO网友:ad2003

我最终得到了以下代码:

$.ajaxSetup({cache:false});
$("#fokus a").click(function(){

    var post_id = $(this).attr("rel");
    $(".postbox_wrapper").html(\'<span class="filter_posts"><img src="<?php bloginfo (\'template_directory\'); ?>/images/287.gif"></span>\');
    $(".postbox_wrapper").load((jQuery(this).attr("href") + " .postbox_wrapper"), function() {
    //$.globalEval(\'http://check.disqus.com/count.js?ver=3.4.1\');
        $.getScript("http://check.disqus.com/count.js?ver=3.4.1", function() {
            //alert(\'first Load was performed.\');
        },false);
    });
    //alert(\'second Load was performed.\');
    return false;
    });
到目前为止,这是可行的。谢谢你的帮助!

公元

结束