繁体   English   中英

呈现来自ajax调用的任何响应(HTML和/或JS)

[英]Render any response from ajax call (HTML and/or JS)

我想知道什么是呈现ajax调用中任何内容的最有效方法。 响应可以是html和/或javascript

因为ajax调用是同步的,所以我使用document.write()来完成它。 现在,我必须使用异步调用,这样我就不能仅使用document.write来写入页面,而是必须在调用完成后将内容添加到特定的html对象中。

我试过了

   $jQuery.ajax({
   url: "myURL.ashx",
   data: params,
   success: function(data){
        var newdiv = document.createElement('div');
        newdiv.innerHTML = data;
        document.getElementById('target').appendChild(newdiv);
   }   

但对于返回的任何JavaScript均无效,它很容易损坏(这意味着;它不呈现内容,或者在新标签页中显示内容时会做一些奇怪的事情)。 我只是为简单的场景工作。

我想知道是否有更好的方法比这更好。

谢谢!

编辑

例如,此代码无法正常工作。 它将内容呈现在空白页面上,而不是将内容添加到当前页面。 我正在使用FF 3.6进行测试。 为简单起见,我在str var上编码了javscript,但是该脚本是从服务器返回的。 服务器返回的内容是ADS,该内容是动态的并且是完全随机的。

        var str = "<sc" + "ript language=\"JavaScript\" type=\"text/javascript\">";
        str += "document.write('<scr'+ 'ipt language=\"JavaScript\" src=\"anything.js\" type=\"text/javascript\"><\/scr' + 'ipt>');";
        str += "<\/script>";
        var newdiv = document.createElement('div');
        newdiv.innerHTML = str;
        document.getElementById('target').appendChild(newdiv);    

jQuery相当于您所拥有的:

success: function(data){
    $('<div />')
        .append(data)
        .appendTo('#target');
}

您将必须解释您的意思

不适用于返回的任何JavaScript

以获得更好的答案。

如果有任何<script>内标签data jQuery将如果您使用评估它们在全球范围内jQuery.append功能就像我上面证明。

更新资料

只需删除document.write语句即可。 仅在页面仍在加载时使用document.write

<script src="anything.js" type="text/javascript"></script>

与进行加载JavaScript的ajax调用相比,包含js文件的方法更好。 我会看.getScript()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM