2011-02-23 19 views
0

我正在开发一个Web应用程序,使用一个非常简单(也许不是真正的MVC兼容)的MVC框架,在开发应用程序的同时编码以保持代码清洁。 虽然我的应用程序有很多AJAX组件,但现在我仍然试图将它们集成到一般的MVC结构中。他们应该如何整合?如何将AJAX集成到MVC风格的Web应用程序中?

我有这样的事情在我的JavaScript文件:

$('#pageList').load(BASE_SITE_URL + 'ajax/pageList.php'); 

和pageList.php曾经有过类似以下的结构:

<?php 

require '../includes/config.inc.php'; 
require BASE_PATH . 'includes/init.inc.php'; 

// a whole load of Controller logic here and then... 
echo "<table>"; 
//display some user data 
echo "</table>"; 

我真搞不清楚这一点,任何建议表示赞赏

+0

无法真正回答有关PHP的问题,但是在Rails中,您可以不受阻碍地将JavaScript放在视图旁边。例如用于“view.html.erb”的“view.js.erb”。服务器反过来知道客户端要求的JavaScript内容类型和足够智能执行/生成适当的JavaScript。 – Zepplock 2011-02-23 21:09:32

回答

0

几个指针 - 你的网站应该是没有JavaScript的功能。例如,如果您已将页面URL分页为/ list /?page = 1 .../list /?page = n,那么您应该确保所有页面都可以点击而不需要javascript。

Javascript应该是真正的网站扩展。在上面的例子中,你可以回来并使用js用一个简单的ajax行为替换所有分页的功能。你可能会想要做的就是使用jquery.load做这样的事情:

$("div.content").load("/list/?page=2 div.content > *"); 

注意负载后的选择。这非常重要,因为我没有真正创建任何新的HTML页面来启用我的网站AJAX。相反,我使用浏览器已有的作为简单URL并使用ajax加载它。

当然,有些时候您只需要AJAX内容,而这些内容在URL上并不存在。在这样的情况下,我建议为所有ajax的东西创建一个控制器,然后为每个视图渲染一个视图。

我希望这会有所帮助。

0

这是我在我的应用程序做:

检查名为XMLHttpRequest一个$_SERVER变量。如果它被设置,这是一个Ajax请求,然后你可以做一些逻辑,以便您的代码不会加载视图(模板和什么不),并输出不同的header()(如果有的话)..

0

我通常有一个与每个视图相关的js脚本名为update.js。它的作用是定义用户如何与视图交互并创建HTTPREQUEST。 然后我有一个名为controller.js的文件接收它,决定如何处理这个请求 并询问模型的响应。 最后,属于视图的update.js使用从模型接收到的新信息更新视图。

我的应用程序目录结构是这样的:

模型/

  • model.class.php
  • 业务。PHP

控制器/

  • Controller.php这样
  • controller.js

视图/

  • view.php
  • update.js

的index.php

我组织文件通过它的作用,而不是类型。我认为这是使用AJAX的MVC模式的最佳方法。请记住,这种模式的目标是保持封装和可伸缩性,这是为我做的最好方法。

相关问题