上下文
我正在开发一个项目,我希望通过PHP + AJAX使其更具动态性。 我正在使用jQuery作为AJAX部分,因为我完全厌倦了Javascript,无论如何它似乎是值得的。 我的应用程序需要使用表单来发送帖子,我想使用ajax调用来执行此操作。在我要发送帖子的页面中,还有最近提交的15个帖子的列表。
第一个问题:我应该忘掉它并仅使用PHP吗?
行动
用户在<textarea></textarea>
中写入内容并点击<a id="myPostSubmit">Submit</a>
,这是我将使用$("#myPostSubmit").live('click', function() { /* here i make the ajax call */ });
之类的jQuery脚本管理的处理程序。如果帖子成功提交,我们将会做一些事情(我将在下一节中讨论它),要么我们将使用我的showAlert(text)
函数提醒用户,该函数显示一个黑盒子4秒钟其中text
。
第二个问题:我应该以其他方式管理点击事件吗?我应该创建一个函数,例如
sendpost(post)
并将其附加到HTMLonclick=""
事件中吗?
如果帖子成功发送
我将讨论两个选项:
我们刷新页面[实际上并非如此 加载整个页面,但制作 另一个检索的ajax调用 帖子列表和消失了 旧的,加载PHP文件 检索新帖子(包括 我们刚发送的那个,然后制作 邮件列表出现]。 Pro :1)我们确定在加载帖子列表后用户正在阅读的内容是发送的真实帖子。所以它实际上是双重检查动作。 2)我们还加载了一些可能发布的帖子。 缺点:1)我们必须创建一个获取帖子列表模板的PHP文件,将该页面的模板切成2个文件。 2)对我来说,这似乎并不顺利。
我们只是使用Javascript来获取帖子模板,将其添加到列表中。 Pro :1)我们让它非常流畅,无需重新加载整个页面。 2)我们不需要任何PHP文件来重新加载页面。我们只使用Javascript(jQuery)。 缺点:1)我们如何获得post html模板将其添加到列表中? 2)如何在没有PHP的情况下获取用户(已记录)信息?
第三个问题:第一个或第二个解决方案是否更好?你会提供更好的第三解决方案吗?
PHP页面
将接收此AJAX调用的PHP页面为:?p=action&a=sendpost
。该页面需要设置$_POST['myMessage']
而不是空的,没有别的。页面本身将从cookie中获取所有用户信息,并将设法执行所需的查询。
该应用程序
它分为3个部分: App , Template , Library 。基本上,应用程序的每个页面都有自己的.app.php
和.tpl.php
文件。
.app.php
文件管理建筑物
页面的基础,使用类
和其他来自图书馆的东西。在
我们的例子是从中检索数据
数据库并将它们放入
变量.app.php
文件的末尾调用模板。 .app.php
文件将检索到的数据发送给模板,.tpl.php
文件输出它们。第四个问题:这是管理我的网络应用程序的好方法吗?
编辑:如何将警报消息返回给用户?
我在$.ajax()
内部读到了一个选项,它将管理成功或错误的响应。关于它的文档非常简单,我没有得到它。
第五个问题:我应该如何返回(从PHP文件中)错误 还是成功了?
答案 0 :(得分:1)
你似乎与所有事情都在正确的轨道上。关于如何准确地附加事件处理程序,如何在页面上重新加载数据以及如何组织应用程序等,有很多关于称为“最佳实践”的意见,但我个人宁愿构建更多软件而不是担心这样的细节。最终会有详细信息。
我个人发现在页面上更新整个服务器端呈现的HTML块是更强大的解决方案,但我看到人们使用模板获得了出色的结果。
答案 1 :(得分:1)
第一个问题:我应该忘掉它并仅使用PHP吗?
好吧,如果你使用ajax,你的应用程序将继续使用JavaScript,这几天我认为它很好;)
第二个问题:我应该以任何其他方式管理点击事件吗?我应该创建一个函数,例如sendpost(post)并将其附加到HTML onclick =“”事件中吗?
创建一个函数并绑定onclick。代码将更具可读性;)
第三个问题:第一个或第二个解决方案是否更好?你会提供更好的第三解决方案吗?
我的解决方案:ajax提交表单并在回调时将新注释插入列表或显示错误消息,如果用户无法发表评论。 检查jQuery serilize()是否使用ajax提交表单数据。
第四个问题:这是管理我的网络应用程序的好方法吗?
这很好;)当你的应用程序变得更大时,你将不得不重新设计它,但不要知道,当当前的解决方案难以使用时这样做。 阅读一些关于构建MVC框架的好书。一般来说,编程模式。