在网站mvc中接收ajax响应

时间:2016-01-27 18:43:57

标签: javascript php ajax model-view-controller

所以我现在有3个文件(一个View,包含list.js和list.php,以及一个由get_data.php文件组成的Controller)。

get_data.php:

<?php
   $str_json = file_get_contents('php://input');
   $data = json_decode($str_json, true);
   $token = $data['token'];
   $request = $data['request'];
   echo "<p>" . $request . "</p>";
?>

list.js:

function getItems(list) {
  var http = new XMLHttpRequest();
  var url = "../model/get_data.php";
  var dataPost = {"token" : true, "request": list};
  var str_json = JSON.stringify(dataPost);

  http.open("POST", url, true);

  http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  http.setRequestHeader("Content-length", dataPost.length);
  http.setRequestHeader("Connection", "close");

  http.onreadystatechange = function() {
      if (http.readyState == 4 && http.status == 200) {
          document.getElementById("show").innerHTML = http.responseText;
      }
  };
  http.send(str_json);
}

window.onload = getItems("start");

list.php的:

<some html code>
<body>
   <span id="show" ></span>
</body>
<some more code>

我正在尝试实现模型 - 视图 - 控制器模式,但我不知道如何将'get_data.php'文件中的'echo'传输到视图中。

请注意,<span>文件中的list.php标记是显示更改文本的标记

1 个答案:

答案 0 :(得分:1)

我想您需要的只是通过require_once()将您的视图“包含”到您的控制器中:

get_data.php:

<?php
    $str_json = file_get_contents('php://input');
    $data = json_decode($str_json, true);
    $token = $data['token'];
    $request = $data['request'];
    //echo "<p>" . $request . "</p>"; -- don't echo anything in the controller
    require_once('item.php');
?>

item.php:

<p>
  <?php echo $request ?>
</p>

require_once()将包含该文件,因此您的范围不会发生变化。