我正在编写一个使用ajax的应用程序,使用php从mysql数据库中检索数据。由于应用程序的性质,用户单击一个href链接,该链接具有用于调用javascript / ajax的“onclick”事件。我正在从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()调用,用分号分隔所有这些调用,并了解到只有最后一个函数调用实际刷新了带有表inf的html页面上的div元素ormation,虽然之前的所有display_html()调用都有效,但如果没有刷新浏览器,就无法在页面上看到它们。
这是javascript或ajax调用的问题,还是DOM中的一个限制,它只允许一次更新一个元素。 ajax调用是异步的,但我已经尝试了两种,只有异步工作期。这在Firefox和Internet Explorer中都是相同的
任何想法是什么以及如何绕过它以便我可以运行这些多个脚本?
答案 0 :(得分:0)
我建议你使用jQuery javascript库。它有一些功能,比如live()
可以“等待”该表出现在浏览器上并应用其余的功能。
此外,它是一组很棒的函数,它们肯定会帮助你减少你编写的代码数量,使它更具人性化。