Php 如何返回控制器变量并将html内容视为ajax json响应

Php 如何返回控制器变量并将html内容视为ajax json响应,php,ajax,json,cakephp,Php,Ajax,Json,Cakephp,我正在使用CakePHP和MVC标准 我正在使用ajax发送一个请求,需要一个与tweeter响应相同的响应,请参见下面的tweeter示例响应 像推特发送: { "user_id":"155dsfds95", "html":" \u003Cdiv class=\"module profile-card component profile-header\" data-component-term=\"profile_follow_card\" \u003E\n ", "screen_name":

我正在使用CakePHP和MVC标准

我正在使用ajax发送一个请求,需要一个与tweeter响应相同的响应,请参见下面的tweeter示例响应

像推特发送:

{
"user_id":"155dsfds95",
"html":" \u003Cdiv class=\"module profile-card component profile-header\" data-component-term=\"profile_follow_card\" \u003E\n ",
"screen_name":"abc"
}
我需要从控制器发送
user\u id
screen\u name
,从视图发送
html
内容

我的答复如下:

$response['user_id'] = $id;
$response['screen_name'] = 'some_name';
到目前为止,我可以将
user\u id
screen\u name
作为
json\u encode($response)

但我如何在
数据
索引中发送带有响应的视图内容呢

更新


我不想在控制器中生成html内容,相反,它应该来自视图。

您可以轻松地从控制器中呈现当前视图并返回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);
}

您可以轻松地从控制器呈现当前视图并返回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);
}

你是在问如何在控制器中获得渲染视图吗?Hello jeremyharris,由于MVC约束,我不想在控制器中生成html内容。如何像推特一样实现这一点。你看过JSON视图吗假设您使用的是CakePHP 2Yes david,我已经查看了JSON视图,但在JSON/XML视图中,我们只能操作来自控制器的数据。我需要的是发送一个json键中的视图内容以及在控制器上创建的另一个json键。您是否询问如何在控制器内获得渲染视图?您好jeremyharris,由于MVC限制,我不想在控制器中生成html内容。如何像推特一样实现这一点。你看过JSON视图吗假设您使用的是CakePHP 2Yes david,我已经查看了JSON视图,但在JSON/XML视图中,我们只能操作来自控制器的数据。我需要的是用一个json键和在controller上创建的另一个json键发送视图内容。很抱歉这么晚才回复,我没有注意到这个答案,今天我意外地看到了答案,当时我再次需要这种功能+接受这个答案。感谢教授这么晚才回复,我没有注意到这个答案,今天我意外地看到了答案,我再次需要这种功能+接受这个答案。谢谢