为什么嵌入的JavaScript在响应ajax调用时不执行?
Why doesn't embedded JavaScript execute when inserted in response to an ajax call?
在. 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代码(用于美化日期)提前写在主页上呢?
相关文章:
- 通过ajax从客户端调用C#方法来执行C#方法
- ajax调用获胜't同步执行
- 使用Node中的Q promise库对值数组顺序调用/执行相同的函数;并返回带有结果的新数组/集合
- 如何在异步调用执行之前阻止执行
- 表单提交成功后调用/执行JQuery函数
- ng 类指令调用执行两次
- 在猫鼬中创建承诺时,不会调用执行器
- 资源查询调用执行计时
- 是使用每个方法调用执行的对象函数
- 是否可以在ioredis中使用单个.sadd/.zadd调用执行多个SADD或ZADD分配
- 对函数调用执行双击功能
- nodejs中的函数调用执行
- 使用AJAX调用执行Javascript
- 使用javascript ajax调用执行PHP脚本
- 通过ajax调用执行动态javascript
- 是否可以通过AJAX调用执行后台PHP服务器任务,该任务不会锁定您的网站
- 停止从外部文件调用执行代码
- JavaScript匿名函数立即调用/执行(表达式与声明)
- JQuery.Load()是否将标记呈现和Java脚本作为单个阻塞调用执行
- 对每个调用执行JavaScript属性计算