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); }
感谢梦想家约瑟夫 。 原来答案在这里 。
编辑:
澄清:
- 脚本只在
script
标签内运行 - 在文档加载后添加脚本,仅在添加到
head
标记时生效
感谢Deniz Porsuk的评论,以改善答案
JSON比XML imho更适合这个目的。