【问题标题】:jQuery AJAX functionsjQuery AJAX 函数
【发布时间】:2010-05-13 11:06:01
【问题描述】:

在将页面获取到这样的 div 时,我正在使用 jQuery 的 load() 函数:

content.php 页面是:

<script type="text/javascript">
   $(".content").load("asd.php");
</script>

而 asd.php 是:

<script type="text/javascript">
   alert("Hello World");
</script>

当加载 ajax 完成时,alert() 消息出现 3 次。实际上它必须只出现1次。所以 load() 函数获取页面 3 次。

我怎样才能一次获得页面?

【问题讨论】:

  • 您只有一个“.content”项目吗?一切看起来都很好。按照建议检查 firebug NET 的位置。

标签: javascript jquery ajax function load


【解决方案1】:

您可能面临与this question 相同的问题。

将包含&lt;script&gt; 元素的内容加载到页面中是非常不可靠的。 jQuery 试图掩盖这些问题,但并不成功。

最好的:不要这样做。将所有静态 JavaScript 代码与使用 load() 加载的内容分开,并使用加载后回调运行您需要绑定到新页面内容的任何 JavaScript 代码。

【讨论】:

  • 你是说:不要使用ajax。或者我理解错了
  • 您可以使用 AJAX,但不要将包括 &lt;script&gt; 在内的任何内容写入元素的 innerHTML(就像 jQuery 的 html()load() 那样)。将脚本远离您使用 AJAX 注入页面的内容。
  • 嗯,听起来不错。但根据我的项目,我必须使用 AJAX 加载一些页面并注入内容。
  • 您可以使用 AJAX 加载某些页面以注入其内容,但不要在该内容中包含 &lt;script&gt;。无论如何,这实际上没有任何意义:脚本应该在每次主页加载时运行一次,而不是在每个子导航上。如果脚本包含任何依赖于不两次定义相同变量或函数的逻辑,或者需要在文档加载时运行(即document.write()),那么它无论如何都无法工作。
  • 从您正在加载的asd.php 中取出&lt;script&gt; 块,并将其中的任何逻辑包含在content.php 加载的脚本中。将完成的回调 function() { // do asd stuff } 传递给 load() 方法。
【解决方案2】:

您确定内容加载了 3 次吗?你有没有用 firebug 来观察实际传输的内容?

【讨论】:

  • 当我打开 firebug 观看时,它(alert() message)会出现一段时间。但又出现了 3 次。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-11
  • 2011-10-17
  • 2020-10-15
  • 2011-10-11
  • 2011-06-11
相关资源
最近更新 更多