【问题标题】:AJAX Script LoadingAJAX 脚本加载
【发布时间】:2011-11-15 09:56:25
【问题描述】:

我目前正在编写一个程序,该程序使用 AJAX 加载表单以编辑网站上的对象。我在Loading script tags via AJAX 发现了一个类似的问题,但它并不能真正满足程序的需求。

返回的 ajax 是表单中预先构建的一组元素,当调用某些区域时,例如 TinyMCE 文本区域(它就是),它返回一组内置在文本中的脚本标签。

所以我的问题是,是否可以遍历已经放在 div 中的脚本标签并运行它们?

另外,我想避免使用 jQuery,因为它可以在任意数量的平台上运行。

【问题讨论】:

  • "另外,我想避免使用 jQuery,因为它可以在任意数量的平台上运行。"这些可能是哪些平台? jQuery 是用 JavaScript 编写的。

标签: javascript ajax


【解决方案1】:

是的,您可以将传入的 html 和脚本添加到 dom,然后在 dom 中搜索任何脚本标签。然后,您将评估脚本,如果您愿意,可以忽略任何 jQuery 脚本标签。

但是:

这种解决方案往往很脆弱。

将 Ajax 有效负载修改为单独的 html 和 javascript 脚本会更好、更稳定。这样,您的 Ajax 处理程序就可以直接处理它们,而无需尝试将它们分开。

已添加

Re:如何发回 html 和 javascript 部分:您可以进行单独的 Ajax 调用,也可以返回包含这两个部分的 JSON 对象。例如:

{"js": "<the js part of the response>",
 "html": "<the html part of the respons>"}

在您的主机系统上使用 json 库来处理转义 js 或 html 值中的任何引号或其他 json 特殊字符的问题。

同时返回 html 和 js 可以节省 Ajax 调用(这可能很重要),并且通常会大大简化您的代码,而不是两次调用。

我在生产中使用了这种技术,效果很好。

【讨论】:

  • 我正在考虑这样做,并在单独的 ajax 查询中创建它
  • @Chris,感谢您的检查。另外,请参阅上面的答案。
【解决方案2】:

你的意思是你从ajax返回一个js脚本并想运行它吗?如果是这样,你可以使用eval函数。

【讨论】:

  • 嗯,它有一个字符串形式的表单元素列表,其中一部分是脚本。到目前为止,我已经做到了,它可以扫描文本中的脚本元素,并在 Head 区域中创建它们。到目前为止,它开始起作用了。我使用unixpapa.com/js/dyna.html 寻求帮助
猜你喜欢
  • 2016-05-22
  • 1970-01-01
  • 1970-01-01
  • 2016-08-12
  • 2010-12-20
  • 2014-09-25
  • 2018-01-20
  • 2016-08-27
  • 2018-03-05
相关资源
最近更新 更多