AJAX调用中的脚本未追加到<head>元素-为什么?

时间:2020-06-13 作者:Sidders

我正在尝试(但失败)在加载页面其余部分之前,将脚本加载到某些帖子的标题中。我的一些帖子有需要脚本才能工作的嵌入,但我下面的临时代码工作不正常。

此AJAX调用已成功发送,脚本正在从接收到的数据中过滤,但由于某些原因,我的AJAX调用没有将这些脚本附加到HTML代码中的head元素。那么我哪里做错了?

(function ($) {
    $(document).ready(function () {

      var $mainContent = $(".main");
      var value;
      $this = \'\';

      $(document).on("click", "#posts a", function (e) {
        e.preventDefault();
        $this = $(this);
        value = $this.attr("href");

          $.ajax({
            url: value,
            type: \'POST\',
            dataType: "html",
            error: function (data) {
              console.warn(data);
            },
            success: function (data) {
              var dom = $(data);
              dom.filter("script").each(function () {
                if (this.src) {
                  var script = document.createElement(\'script\'),
                    i, attrName, attrValue, attrs = this.attributes;
                  for (i = 0; i < attrs.length; i++) {
                    attrName = attrs[i].name;
                    attrValue = attrs[i].value;
                    script[attrName] = attrValue;
                  }
                  document.getElementsByTagName("head")[0].appendChild(script);
                }
              });
            }
          }).done(function (data) {
            var dom = $(data);
            $mainContent.html(dom.find(\'.main\').html());
          });
      });
    });
  })(jQuery);

1 个回复
SO网友:Sidders

此代码对我有效:

    success: function (data) {
      var dom = $(data);
      scripts = dom.filter(\'script\').each(function () {
        script = $(this);
        $("head").append(script);
      });
      //...more code
    }

相关推荐

ajax response not recieving

有谁能在这方面帮助我吗。我的问题是,当我ajax请求WordPress时,当我在控制台中记录响应时,它会显示error/complete 不response.jQuery(document).ready(function($) { $(\".pincode_search_field\").on(\'keyup\', function(event) { event.preventDefault(); var ajax_url = pin_shop.ajax_url;&