Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在应用js和css之前,使用ajax服务调用获取的HTML已经被扭曲了一段时间_Javascript_Jquery_Html_Css_Ajax - Fatal编程技术网

Javascript 在应用js和css之前,使用ajax服务调用获取的HTML已经被扭曲了一段时间

Javascript 在应用js和css之前,使用ajax服务调用获取的HTML已经被扭曲了一段时间,javascript,jquery,html,css,ajax,Javascript,Jquery,Html,Css,Ajax,我正在使用ajax进行服务调用,并在页面上加载HTML内容此HTML包含内容、一些外部脚本调用和内部css。但是当这个HTML被加载时,它会被扭曲一段时间(3-4秒),然后js和css被应用到HTML中。有没有什么解决方案可以让我应用js和css的HTML,然后将其附加到我的div中或我想放在哪里 $.ajax({ type: 'POST', url: service-URL,

我正在使用ajax进行服务调用,并在页面上加载HTML内容此HTML包含内容、一些外部脚本调用和内部css。但是当这个HTML被加载时,它会被扭曲一段时间(3-4秒),然后js和css被应用到HTML中。有没有什么解决方案可以让我应用js和css的HTML,然后将其附加到我的div中或我想放在哪里

            $.ajax({
                type: 'POST',    
                url: service-URL,
                crossDomain : _crossDomain,
                contentType : 'text/plain',
                data:JSON.stringify(objReq),
                error:function (xhr, ajaxOptions, thrownError){
                },
                success: function(outputHTML){
                    $("#contentDiv").html(outputHTML);
                }
            }); 
当使用
html()
innerHTML=
时,您只将代码写入站点。口译员随后必须理解这一点,这会导致延迟。
相反,您可以将内容作为DOM应用,方法是不将其作为文本/纯文本传递,或者首先创建documentFragment
document.createDocumentFragment()
,它类似于可以将子节点附加到的空节点,然后将该片段附加到主DOM。

为了避免这种情况,您可以在主文档中加载css和Java脚本

在任何情况下,出于任何原因,如果您不想在主文档中的ajax调用之前加载它们(例如,为了加快第一页加载),您可以使用 嵌套的ajax调用如下:

   $.get(resource.url, {cache:true}, function(css) {
   //cache : true will handle browser cache , it will load instantly:  

       $("head").append($("<link>",{
          rel: "stylesheet",
          type: "text/css",
          href: resource.url
       }));

   }).then(function(){
      //You can now call your AJAX here
   });
$.get(resource.url,{cache:true},函数(css){
//缓存:true将处理浏览器缓存,它将立即加载:
$(“标题”)。附加($(“”){
rel:“样式表”,
键入:“文本/css”,
href:resource.url
}));
}).然后(函数(){
//现在可以在这里调用AJAX
});

试试
$(“#contentDiv”).empty().html(outputHTML)尝试加载依赖项或在初始页面加载时加载它们..empty()将清空该div的内容。应用js和css将如何帮助呈现HTML。@itzmukeshy7如何配置要求js从我从服务获取的HTML加载外部js调用。您不能像设置普通节点那样设置文档片段的innerHTML,这就是问题所在。@ps007但您以前可以将其解析为DOM。我可以附加响应,即文档。但问题是获取响应并将其放入目标div@ps007为什么不尝试以html的形式接收内容呢?你有没有试过像Mild建议的那样预加载css和脚本?@ps007你应该等待脚本和css加载。加上米拉德的解决方案,应该会有所帮助。我想,你可以用
onlaod
来实现这一点,但最好先查一下。