2009-11-09 23 views
0

我正在编写一个应用程序,它使用ajax从使用php的mysql数据库中检索数据。由于应用程序的性质,用户点击了一个用于调用javascript/ajax的“onclick”事件的href链接。我从mysql中检索数据,然后调用一个单独的php函数,它创建一个带有必要数据的小型html表。新表传回给responseText并显示在div标签内。这些表格中只有大约10-20行数据。此功能工作正常,并以html格式显示数据,完全按照需要在页面上显示。使用多个javascript调用不显示数据的Ajax问题

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

更新

这个字符串变得内置动态使用与提供的参数PHP,但在这个例子中,我只是拿了出来参数,所以它没有得到混淆。

“update_existion()函数实际上调用了display_html()函数,它根据需要更新页面的一部分,我需要在更新后立即更新页面的不同部分,这就是为什么我再次调用display_html(),问题是只有最后一个调用正在屏幕上更新,换句话说,第二个函数调用“display_html()”会执行并显示刷新的数据很好,但以前对update_existing()的调用会正常运行和更新数据库,但除非按下浏览器的“刷新”按钮,否则不会显示在屏幕上,这当然会按照我想要的方式显示新数据,但我不希望用户不得不按下“刷新”按钮,我尝试添加多个“display_html()调用”,然后用分号和l分隔所有的“display_html赢得了只有最后一个函数调用实际刷新了带有表信息的html页面上的div元素,尽管之前的所有display_html()调用都起作用,但是在没有刷新浏览器的情况下,它们不能在页面上看到。

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

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

+0

你能发布一个链接到网站吗? – Peter 2009-11-09 19:05:54

回答

0

我会推荐你​​使用jQuery javascript库。它有一些功能,如live()可以“等待”该表出现在浏览器上,并应用其余的功能。另外,这是一套很棒的功能,它可以帮助您减少编写代码的次数,使其更具人性化。

+0

谢谢yoda。我不熟悉jquery,但我会进一步研究它。但是,我仍然对代码不显示的原因感到困惑。 JavaScript本质上是同步的,并且两个调用彼此互斥,并且应该“刷新”div标签而不需要使用浏览器刷新按钮。这对我没有意义吗? – Ronedog 2009-11-09 18:53:42

+0

问题是,imo,upcomming html表格没有添加到DOM,因此您分配给它的功能可能无法正常工作。这就是为什么jQuery的人创建了live()函数,o确保任何新的标记都被分配给了你想要的任何函数。 – yoda 2009-11-09 18:56:29