【问题标题】:Receive ajax response in a website mvc在网站 mvc 中接收 ajax 响应
【发布时间】:2016-01-27 18:43:56
【问题描述】:

所以我现在有 3 个文件(一个由 list.js 和 list.php 组成的视图,以及一个由 get_data.php 文件组成的控制器)。

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”传输到视图。

请注意list.php 文件中的&lt;span&gt; 标记是显示变化文本的标记

【问题讨论】:

    标签: javascript php ajax model-view-controller


    【解决方案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() 将包含该文件,因此您的范围不会改变。

    【讨论】:

    • 是的,我知道 MVC 是如何工作的,但在这种情况下不应该那样做,因为这只会加载 .js 函数一次,而它应该加载多次。
    • 哦,我明白你的意思了。所以控制器只用于物品?那么我仍然需要包含&lt;span&gt; 标签的list.php 文件,对吧?
    • 是的,因为您的 .js 只会将内容添加到您的 DOM 并且需要 &lt;span&gt; 作为参考来决定将其放置在哪里(但您可能宁愿将其更改为 &lt;div&gt; 为 @987654329 @ 用于内联文本)。旁注:您可能还考虑在 php 中创建一个视图对象,该对象接收一些数据和模板文件的名称,以便对其进行更通用的处理。
    猜你喜欢
    • 2019-03-07
    • 1970-01-01
    • 2012-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-04
    • 1970-01-01
    • 2020-08-20
    相关资源
    最近更新 更多