【问题标题】:Ajax problem not displaying data using multiple javascript callsAjax 问题不使用多个 javascript 调用显示数据
【发布时间】:2009-11-09 18:35:30
【问题描述】:

我正在编写一个应用程序,它使用 ajax 来使用 php 从 mysql 数据库中检索数据。由于应用程序的性质,用户单击具有用于调用 javascript/ajax 的“onclick”事件的 href 链接。我正在从 mysql 检索数据,然后调用一个单独的 php 函数,该函数创建一个包含必要数据的小 html 表。新表被传回 responseText 并显示在 div 标签内。这些表中只有大约 10-20 行数据。此功能运行良好,并以 html 形式完全按照页面上的需要显示数据。

问题是这样的。 HREF“onclick”事件需要一个接一个地运行多个脚本。第一个脚本更新“现有”数据,并且在“update_existing”函数内部调用以使用来自 responseText 的更新后的 HTML 刷新页面的一部分。然后,当完成时,调用“display_html”函数,该函数还使用新创建的 HTML 表更新页面的不同部分。事件如下所示:

更新

这个字符串是使用提供参数的 php 动态构建的,但是对于这个例子,我只是把参数去掉了,所以它不会让人困惑。

“update_existion() 函数实际上调用了 display_html() 函数,该函数根据需要更新页面的一部分。我需要在更新后立即单击鼠标来更新页面的不同部分,即为什么我在它之后再次调用 display_html()。问题是我的屏幕上只有最后一个调用正在更新。换句话说,第二个函数调用“display_html()”执行并显示刷新的数据就好了,但是之前对 update_existing() 的调用会正确运行并更新数据库,但不会显示在屏幕上,除非我按下浏览器的“刷新”按钮,这当然会完全按照我想要的方式显示新数据,但我不希望用户必须按下“刷新”按钮。我尝试一个接一个地添加多个“display_html() 调用,用分号分隔所有调用,并了解到只有最后一个函数调用实际上刷新了html页面上的div元素与表格inf ormation,尽管之前的所有 display_html() 调用都有效,但如果不刷新浏览器,它们就无法在页面上看到。

这是 javascript 或 ajax 调用的问题,还是 DOM 中一次只允许更新一个元素的限制。 ajax 调用是异步的,但我都尝试过,只有异步工作期间。这在 Firefox 和 Internet Explorer 中都是一样的

任何想法发生了什么以及如何解决它以便我可以运行这些多个脚本?

【问题讨论】:

  • 你能发一个网站的链接吗?

标签: php javascript mysql ajax


【解决方案1】:

我建议您使用 jQuery javascript 库。它有一些功能,例如live(),可以“等待”该表格出现在浏览器上,然后在其上应用其余功能。

此外,它是一组很棒的函数,肯定会帮助您减少编写的代码量,使其更易于阅读。

【讨论】:

  • 谢谢尤达。我不熟悉 jquery,但我会进一步研究它。但是,我仍然对为什么代码不显示感到困惑。 Javascript 本质上是同步的,两个调用相互排斥,应该“刷新” div 标签而不需要使用浏览器的刷新按钮。这对我来说没有意义吗?
  • 问题,imo,是即将提交的 html 表未添加到 DOM,因此您分配给它的功能可能无法正常工作。这就是 jQuery 开发人员创建 live() 函数的原因,o 确保将任何新标记分配给您想要的任何函数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多