为什么嵌入的JavaScript在响应ajax调用时不执行?

Why doesn't embedded JavaScript execute when inserted in response to an ajax call?

本文关键字:调用 执行 ajax 响应 JavaScript 为什么      更新时间:2023-09-26

在. innerhtml中插入JavaScript不会导致它运行。

我有一个迷你提要,用户可以在其中提交帖子。这会启动一个ajax调用,将用户数据保存到mysql表中。PHP从这里生成xhtml。然后,PHP生成的xhtml作为响应文本发送回javascript。这个xhtml包含用于显示"pretty time"的嵌入式javascript。

现在,如果PHP生成的xhtml/javascript以非ajax方式发送到客户端,这就可以工作了。但是当我把它作为responseText发送,然后使用. innerhtml更新DOM时,它不起作用。无论在XHTML中使用什么机制来挑选javascript,似乎都不像嵌入到div标记的. innerhtml属性中的javascript。

是否有一个简单的解决方案?或者我是否必须在javascript中构建UI,而不是将其全部插入innerHTML…在之前的一篇文章中有人提到。innerhtml不是一个好的实践。也许这就是他们的意思。

你是对的,innerHTML不会这样做,如果你想动态创建一个脚本标签,你需要使用document.createElement来创建一个脚本标签,但这与eval相关的所有美妙的安全奖励。

这里有另一个想法。在主页中定义一些函数,在添加任何新内容后,将日期设置为"漂亮"模式,而不需要AJAX响应知道任何有关它的信息,这不是更好吗?

下面的代码应该可以工作:

function onSuccess() {
    src = document.createElement('script');
    src.innerHTML = this.responseText;
    document.body.appendChild(src);
}

但是我同意cwallenpoole的观点,为什么不把所有的javascript代码(用于美化日期)提前写在主页上呢?