【发布时间】:2018-07-25 13:42:39
【问题描述】:
我建立了自己的 PHP MVC 网站。我希望管理员可以使用 jQuery 和 getJSON 函数查看数据而无需刷新
管理员控制器中的索引方法
public function index(){
session_start();
if($this->isLogin()){
echo json_encode($this->adminModel->getAdsWithNoPermission());
}else{
die("404 NOT FOUND");
}
}
管理员控制器中的 Home 方法
public function home(){
session_start();
if($this->isLogin()){
$this->view('admin/index');
}else{
redirect('pages/notfound');
}
}
管理/索引视图中的 Jquery 脚本
function adsOutput(){
$.getJSON('<?php echo URL_ROOT;?>admins/index',function(data){
var adminid = '<?php echo $_SESSION['admin_id'];?>';
$.each(data,function(i,item){
$('#adsOutput').append('<tr>');
$('#adsOutput').append('<th score="row">' + i);
$('#adsOutput').append('<td>' + data[i].title + '</td>');
$('#adsOutput').append('<td>' + data[i].subject + '</td>');
$('#adsOutput').append('<td>' + data[i].description + '</td>');
$("#adsOutput").append('<td><input type="submit" class="publish btn btn-success" value="publish" adid=' + data[i].id + ' adminid=' +adminid +' ><input type="submit" class="delete btn btn-danger" value="delete" adid=' + data[i].id + ' adminid=' +adminid +' ></td>' );
console.log(data);
})
})
}
如您所见,我编写了 2 个方法 home 和 index 。索引只是以 json 方式回显来自模型的数据。和首页返回首页浏览量。在 jquery 函数中,我从索引页面获取 json 文件并在 html 中显示数据。 代码可以正常工作,但我想知道我怎样才能只有一个这样的索引方法
public function index(){
session_start();
if($this->isLogin()){
echo json_encode($this->adminModel->getAdsWithNoPermission());
$this->view('admins/index');
}else{
die("404 NOT FOUND");
}
}
因为当我这样编写索引并删除 home 方法时,输出是这样的:https://pasteboard.co/Hw62NKh.jpg
如果我无法处理索引方法中的所有事情,并且需要存在 home 方法,我如何隐藏索引方法(避免管理员通过 URL 到达那里)只是为了将它用于 jquery。
【问题讨论】:
-
仅供参考,您应该拥有一个管理所有
session_start()的文件,因此您不必重复它。 -
一种方法是使用 ajax 调用发送特定变量,通知您的脚本您只希望 json 返回。然后,您无需同时回显 json 和整个页面,而是根据称为变量的 ajax 执行其中一项操作。否则,您只需要两种完全不同的方法,所有 ajax 调用都转到一个 url,所有正常浏览都转到另一个 url。 “哪个更好”是一个固执己见的问题,所以 YMMV。