我有一个默认控制器:
类 主页扩展 CI_Controller {
public function index()
{
$data['content']='discover';
$this->load->view('layouts/master', $data);
}
public function categories()
{
$this->load->view('categories');
}
}
单击时,使用 AJAX 我能够加载视图类别.php并将 URL 更新为 www.mywebsite.com/categories,而无需刷新页面。
但是现在,如果用户直接使用链接或刷新页面到达此处,他最终只会加载类别.php视图,而不是主.php视图
如何在直接 URL 导航或页面刷新时加载主.php和类别.php视图
只需加载类别.php使用 AJAX 时。
我的 AJAX:
$('#navbar a').click(function(e){
e.preventDefault();
href=$(this).attr('href');
if (href.indexOf(document.domain) > -1 || href.indexOf(':') === -1){
window.history.pushState('obj', '', href);
navigat(href);
}
});
function navigat(href){
$.ajax({
type:'GET',
url:href,
cache:false,
dataType: 'html',
statusCode: {
404: function() {
$("#content").html('Could not contact server.');
},
500: function() {
$("#content").html('A server-side error has occurred.');
}
},
error: function() {
$("#content").html('A problem has occurred.');
},
success: function(html) {
$('#content').html(html);
}
});
};
谢谢!
CodeIgniter 输入类提供了一些辅助函数来处理用户输入,这个类是由系统自动初始化的,所以不需要手动初始化。
我总是建议在处理表单和请求时使用 PHP Core 输入变量来代替此类。
要检查 CodeIgniter 中的 Ajax 请求,代码点火器输出类方法类 is_ajax_request() ,此函数检查是否已设置HTTP_X_REQUESTED_WITH服务器标头,如果设置响应为真,否则 false 表示它将返回布尔响应。
在控制器中,您可以使用以下代码
if (!$this->input->is_ajax_request()) {
echo "Not ajax request";
} else {
echo "Ajax Request";
}
因此,在控制器操作中使用上述脚本,您可以确定用户是直接来自还是来自 ajax 调用。
你需要添加
<?php echo site_url()?>
在 href 中,希望这将帮助您解决问题