not returned in AJAX([removed] not returned in AJ

2019-10-17 07:58发布

我创建一个WordPress主题,并使用AJAX来加载新的存档页。 问题是,整个< script type="text/javascript">//something//< /script>没有在新获取的内容返回。

假设我有这些代码起初:

<div id="post-1">
    <script type="text/javascript">
    //some codes here//
    </script>

    <div class="content">
    </div>
</div>

导航到一个页面,并重新使用AJAX这种原始页面后,我会得到这些(萤火虫),而不是:

<div id="post-1">
    <div class="content">
    </div>
</div>

Javascript的代码整个块将不予退还,但在Firebug的“脚本”选项卡中的“内联”下的脚本,它们仍然存在。

所以,我想知道我做了什么错在检索使用AJAX新的内容? 下面是我使用的代码:

    jQuery('.ajax-pagination a').live('click', function(e){ //check when pagination link is clicked and stop its action.
    e.preventDefault();
    var link = jQuery(this).attr('href'); //Get the href attribute
    jQuery.ajax({
        url: link,
        dataType: "text",
        context: document.body,
        beforeSend: function(){jQuery('#container').fadeOut(500)},
        success: function(html) {
            var newhtml = $('#container', $(html))
            $('#container').html(newhtml);
            $("container").find("script").each(function(i) {
                eval($(this).text());
            });
            jQuery('#container').fadeIn(500);

        },
        error: function() {
            alert('Error');
        }
    });
    });

我试图通过运行AJAX加载Javacript,但问题似乎是Javascript本身甚至没有与内容的其余部分一起返回。

感谢您阅读这么长的问题,我真的很感谢您的帮助!

Answer 1:

所述.html()方法条<script>从插入HTML标签。

你需要遍历HTML您尝试将它找到的所有脚本标记,然后使用 jQuery.globalEval执行其内容。

success: function(html) {
    var newhtml = $('#container', $(html));

    // execute included script tags - assumes inline for now
    $('script', newhtml).each(function() {
        $.globalEval($(this).text());
    });

    $('#container').html(newhtml).fadeIn(500);
}


文章来源: