在 cakephp 3 中呈现 ajax 响应的视图
rendering view on ajax response in cakephp 3
我正在使用 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查看。
好吧,如果您想用视图文件加载特定的 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;
我正在使用 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查看。
好吧,如果您想用视图文件加载特定的 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;