我建立了自己的PHP MVC网站。我希望管理员可以使用jQuery和getJSON函数无需刷新即可查看数据
管理员控制器中的索引方法
public function index(){
session_start();
if($this->isLogin()){
echo json_encode($this->adminModel->getAdsWithNoPermission());
}else{
die("404 NOT FOUND");
}
}
管理员控制器中的主页方法
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到达admin),仅将其用于jquery。 / p>
答案 0 :(得分:0)
您不能像这样合并两个请求。索引函数应该只返回一件事,即页面。也许您可以在视图方法中添加一个“参数”参数,例如
$this->view('admins/index',$this->adminModel->getAdsWithNoPermission());
然后在您的视图中,将数据回显到JS对象或HTML中。
请注意,输出JSON数据时应设置内容类型。例如
header('Content-Type: application/json');