jQuery:评估ajax响应中的脚本

来自我的webapp的XML响应都有要添加到页面的HTML,有些还有要运行的脚本。

我正在尝试从我的webapp发回XML,如:

   <![CDATA[

add me to the page

]]>

我现在正在做的是抢购 CDATA,将html插入页面并eval’ing

我正在寻找对我的方法的批评。 任何人的建议?

你宁愿发送JSON,它更容易解释。 例:

 // Suppose your response is a string: // { html: "

add me to the page

, script:"alert('execute me');" } var obj = eval( "(" + response + ")" ) ; eval( obj.script ) ;

您可以使用jQuery库向后端发出XML请求并解析它

 $(document).ready(function() { $.ajax({ type: "GET", url: "your/url/that/returns/xml", dataType: "xml", success: function (xml) { // xml contains the returned xml from the backend $("body").append($(xml).find("html-to-insert").eq(0)); eval($(xml).find("script").text()); } }); }); 

你可以在这里和这里找到更多关于jQuery的信息

我没有测试它,但它应该根据这篇文章工作 。

这是我找到的最佳答案。 完美的工作:


 element.innerHTML = xmlhttp.responseText; var scriptElements = element.getElementsByTagName('SCRIPT'); for (i = 0; i < scriptElements.length; i ++) { var scriptElement = document.createElement('SCRIPT'); scriptElement.type = 'text/javascript'; if (!scriptElements[i].src) { scriptElement.innerHTML = scriptElements[i].innerHTML; } else { scriptElement.src = scriptElements[i].src; } document.head.appendChild(scriptElement); } 

感谢梦想家约瑟夫 。 原来答案在这里 。

编辑:

澄清:

  1. 脚本只在script标签内运行
  2. 在文档加载后添加脚本,仅在添加到head标记时生效

感谢Deniz Porsuk的评论,以改善答案

JSON比XML imho更适合这个目的。