【问题标题】:how to return both controller variables and view html contents as ajax json response如何返回两个控制器变量并查看 html 内容作为 ajax json 响应
【发布时间】:2013-01-08 13:18:14
【问题描述】:

我正在使用 CakePHP 和 MVC 标准。

我正在使用 ajax 发送请求,并且需要以与高音响应相同的方式进行响应,请参阅下面的高音示例响应。

就像高音喇叭一样:

{
"user_id":"155dsfds95",
"html":" \u003Cdiv class=\"module profile-card component profile-header\" data-component-term=\"profile_follow_card\" \u003E\n ",
"screen_name":"abc"
}

我需要从控制器发送user_idscreen_name,从视图发送html 内容。

我的回复数据如下:

$response['user_id'] = $id;
$response['screen_name'] = 'some_name';

现在我可以将user_idscreen_name 发送为json_encode($response)

但是如何在data 索引中发送视图内容以及响应?

更新

我不想在控制器中制作 html 内容,而是应该来自视图。

【问题讨论】:

  • 您是在问如何在控制器中获得渲染视图?
  • 你好 jeremyharris,由于 MVC 的限制,我不想在控制器中制作 html 内容。如何像高音扬声器一样实现这一点。
  • 你看过 JSON 视图吗? book.cakephp.org/2.0/en/views/json-and-xml-views.html - 假设你使用的是 CakePHP 2
  • 是的,大卫,我看过 JSON 视图,但在 json/XML 视图中,我们也只能操作来自控制器的数据。我需要的是在一个 json 键中发送视图内容以及在控制器创建的另一个 json 键。

标签: php ajax json cakephp


【解决方案1】:

您可以轻松地从控制器渲染当前视图并返回 JSON 响应。

工作示例:

public function index() {
    $response = $this->render();
    $data = array(
        'json_key_1' => 'value1',
        'json_key_2' => 123,
        'action_html' => $response->body()
    );
    $options = array(
        'type' => 'json',
        'body' => json_encode($data)
    );
    return new CakeResponse($options);
}

【讨论】:

  • 很抱歉这么晚才回复,这个答案没有引起我的注意,今天我偶然看到了答案,当我再次需要这种功能时。 +1 并接受这个答案。谢谢
猜你喜欢
  • 2018-03-17
  • 1970-01-01
  • 2014-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-18
  • 1970-01-01
相关资源
最近更新 更多