【问题标题】:rendering view on ajax response in cakephp 3在 cakephp 3 中渲染 ajax 响应视图
【发布时间】:2017-03-21 16:06:04
【问题描述】:

我正在使用 CakePHP 3.4

我正在向控制器发出 Ajax 请求,以从数据库中获取一些数据并将其响应回视图。因为,返回的数据是一组数据,可以从 1 行到 100 行。我想制作一个单独的视图并将响应数据发送到该视图,然后用该视图替换 div 内容。

这就是ajax调用的方式

$('#trigger_connect_btn').click(function(e) {
    e.preventDefault();
    var data = {server_id : $('#server_id').val()};
    $.ajax({
        type: 'post',
        data: data,
        url: '/servers/trigger-connect',
        success: function(result){
            console.log(result);
        }
    });
});

triggerConnect() 操作

public function triggerConnect()
{
    $this->autoRender = false;
    $id = $this->request->getData('server_id');

    $server = $this->UserServers->get($id);
    $ftp = new \FtpClient\FtpClient();
    $ftp->connect($server->server_url);

    $res = $ftp->login($server->server_username, $server->server_password);

    if ($res) {
        $response['code'] = 100;
        $response['type'] = 'Success';
        $response['message'] = 'Login Success';
        $response['content'] = $ftp->scanDir();
    } else {
        $response['code'] = 101;
        $response['type'] = 'Error';
        $response['message'] = 'Login Failed';
    }

    echo json_encode($response);
}

当前视图文件有

<div id="response-content"></div>

这工作正常,返回的内容正在控制台中打印。我知道,我可以使用 jQuery 遍历数据并在视图中打印,但我想为其创建一个单独的视图文件,该文件将呈现返回的数据,然后使用呈现的视图更新当前视图文件中的 div。

【问题讨论】:

标签: jquery ajax cakephp cakephp-3.4


【解决方案1】:

如果你想用它的视图文件加载特定的 CakePHP 方法,那么有 jquery load 方法供你使用。

$('#trigger_connect_btn').click(function(e) {
   e.preventDefault();
   $("#response-content").load("/servers/trigger-connect", {
       server_id : $("#server_id").val()
   });
});

上述脚本会将函数trigger-connect的对应视图加载到#response-content

现在注释掉/删除您的操作中的以下行,并确保您已设置变量以根据需要在相应视图中对其进行迭代。

// $this->autoRender = false;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-14
    • 1970-01-01
    • 2015-11-11
    • 2014-01-19
    • 2011-07-26
    • 1970-01-01
    • 2013-08-06
    • 1970-01-01
    相关资源
    最近更新 更多