【问题标题】:Send a post with PHP + AJAX使用 PHP + AJAX 发送帖子
【发布时间】:2011-06-23 09:16:52
【问题描述】:

上下文

我正在做一个项目,我想用 PHP + AJAX 使之更具动态性。 我在 AJAX 部分使用 jQuery,因为我完全沉迷于 Javascript,而且无论如何它似乎是值得的。 我的应用程序需要使用表单来发送帖子,并且我想使用 ajax 调用来执行此操作。在我要发帖的页面,还有最近提交的15个帖子的列表。

第一个问题:我应该忘记它而只使用 PHP 吗?

动作

用户在<textarea></textarea> 中写了一些东西,然后单击<a id="myPostSubmit">Submit</a>,这是我将在jQuery 脚本上使用$("#myPostSubmit").live('click', function() { /* here i make the ajax call */ }); 之类的东西管理的处理程序。如果帖子成功提交,我们将做一些事情(我将在下一节中讨论),或者我们将使用我的 showAlert(text) 函数提醒用户,该函数显示一个黑框 4 秒,并带有 @987654327 @在里面。

第二个问题:我应该以其他方式管理 click 事件吗?我应该创建一个函数,例如sendpost(post) 并将其附加到 HTML onclick="" 事件中吗?

如果帖子发送成功

我会就 2 个选项展开讨论:

  1. 我们刷新页面[其实不是 加载整个页面,但 另一个检索 帖子列表并使之消失 老一,加载PHP文件到 检索新帖子(包括 我们刚刚发送的那个),然后制作 帖子列表出现]。 Pro: 1) 我们确定用户在帖子列表加载后正在阅读的内容是真正发送的帖子。所以它实际上会仔细检查动作。 2)我们还加载了同时发送的一些可能的帖子。 缺点:1) 我们必须创建一个 PHP 文件来获取帖子列表模板,将该页面的模板分割成 2 个文件。 2) 对我来说,这似乎并不顺利。

  2. 我们只是使用 Javascript 来获取帖子模板,将其添加到列表中。 专业版:1) 我们让它非常流畅,无需重新加载整个页面。 2) 我们不需要任何 PHP 文件来重新加载页面。我们只使用 Javascript (jQuery)。 缺点: 1) 我们如何获取 post html 模板以将其添加到列表中? 2) 我们如何在没有 PHP 的情况下获取用户(记录)信息?

第三个问题:第一个解决方案好还是第二个解决方案好?您会提供更好的第三个解决方案吗?

PHP 页面

将接收此 AJAX 调用的 PHP 页面是:?p=action&a=sendpost。该页面需要设置 $_POST['myMessage'] 并且不为空,仅此而已。页面本身将从 cookie 中获取所有用户信息,并将设法执行所需的查询。

应用程序

分为3部分:App模板。基本上,应用程序的每个页面都有自己的.app.php.tpl.php 文件。

  1. .app.php 文件管理建筑物 页面的基础,使用类 和图书馆的其他东西。在 在我们的案例中,它从 数据库并将它们放入 变量。
  2. 模板在.app.php 文件的末尾调用。 .app.php 文件将检索到的数据发送到模板,.tpl.php 文件将它们输出。
  3. 该库用于在应用程序文件中包含我们需要的类和函数。

第四个问题:这是管理我的网络应用程序的好方法吗?

编辑:如何将警报消息返回给用户?

我在$.ajax() 中读到了一个选项,它将管理成功或错误的响应。关于它的文档非常简单,我没有得到它。

第五个问题:我应该如何(从PHP文件)返回错误 还是成功?

【问题讨论】:

  • 你考虑过jQuery表单插件(malsup.com/jquery/form)吗?
  • 真正的问题不在于提交过程,而在于接下来会发生什么(帖子列表的刷新)。无论如何,感谢 jQuery 表单插件,它可能对我有很大帮助。
  • @Michael,你没有理解我的问题。
  • 抱歉没看完整,但你也应该使用Q2的Ajax帖子来加载更改的数据。 (作为 Q3 的答案结合您的建议 1)

标签: php javascript html ajax


【解决方案1】:

第一个问题:我应该忘记它而只使用 PHP 吗?

好吧,如果你使用 ajax,你的应用程序将在 JavaScript 上进行中继,现在我认为它很好;)

第二个问题:我应该以其他方式管理点击事件吗?我应该创建一个函数,例如 sendpost(post) 并将其附加到 HTML onclick="" 事件中吗?

创建一个函数并绑定onclick。代码将更具可读性;)

第三个问题:第一个或第二个解决方案更好吗?您会提供更好的第三个解决方案吗?

我的解决方案:ajax 提交表单并在回调中插入新评论到列表中,或者如果用户无法评论则显示错误消息。 检查jQuery serilize() 使用ajax 提交表单数据。

第四个问题:这是管理我的 Web 应用程序的好方法吗?

很好 ;) 当您的应用程序变得更大时,您将不得不重新设计它,但不要知道,当当前的解决方案变得难以使用时才这样做。 阅读一些关于构建 MVC 框架的好书。以及一般的编程模式。

【讨论】:

  • 感谢您的回答。第五个问题呢?
  • 使用 json 作为 ajax 返回格式并让它包含成功和错误字段;)
【解决方案2】:

您似乎在所有事情上都走在了正确的轨道上。关于如何准确附加事件处理程序、如何在页面上重新加载数据以及如何组织您的应用程序等,有很多称为“最佳实践”的意见,但我个人宁愿构建更多软件而不是担心这样的细节.细节最终会告诉你。

我个人发现在页面上更新整个服务器端呈现的 HTML 块是更可靠的解决方案,但我看到人们使用模板获得了出色的结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-07
    • 2013-04-08
    • 1970-01-01
    相关资源
    最近更新 更多