如何更改我的代码以使用AJAX

时间:2013-08-26 03:44:28

标签: php jquery

我已经构建了一个基本的MVC字体控制器应用程序。它的构建目的是为了便于网站编辑,索引。 php是每个js和css文件加载的唯一页面,然后前端控制器将适当的内容文件转发并将其放入指定的div中,并且可以通过将?pagename添加到网址的结尾(例如:site.com/index.php?about-us)。它没有PHP错误很好,但是我现在正在尝试在网站中构建一个音频播放器,并希望它在页面之间保持持久性,所以我试图编辑这个mvc代码来改为使用ajax,以便不重新加载页面改变内容。下面是我的页面代码。

index.php code snippet

<div id="mpane-in">
    <?php

       /** Display errors in production mode Only DO NOT un-comment unless testing **/
       //ini_set('display_errors', 1);

       // Load the routing controller
       require 'application/router.php';
    ?>
</div>

/application/router.php

  require 'load.php';
  require 'model.php';

  require 'controller.php';
  new Controller(); 

load.php

class Load {
  function view( $file_name, $data = null ) 
    {
      if( is_array($data) ) {
         extract($data);
    }
    include 'pages/' . $file_name;
  }
}

model.php

class Model {
   public function user_info()
   {
      // simulates real data
      return array(
         'first' => 'Target',
         'last'  => 'Not_Loaded'
      );
   }
}

controller.php

 class Controller {
   public $load;
   public $model;

   function __construct()
   {
      $this->load = new Load();
      $this->model = new Model();

      // determine what page you're on
      $this->home();
   }

   function home()
   {
       if ($_SERVER['QUERY_STRING'] === ""){
        $data = $this->model->user_info();
        $this->load->view('main.php' , $data);
       }
       else {
        $data = $this->model->user_info();
        $this->load->view($_SERVER['QUERY_STRING'] . '.php' , $data);
       }
   }
}

任何建议都会很棒!谢谢!

1 个答案:

答案 0 :(得分:1)

以过于简化的方式,您可以使用现有代码而无需更改任何内容。 g

 class Controller {
  .....

  //call this ajax function 
  function ajaxLogin(){
       $this->load->partialView($_SERVER['QUERY_STRING'] . '.php' , $data);
  }
}

您只需要使用部分视图来避免加载<html><header></body>,如果是text / html响应,对于json和xml输出,您可能需要在回显视图内容之前发送正确的内容类型标题。以肮脏和快速的方式添加一些东西来处理内容类型和部分视图,你就完成了。