我有一个默认控制器:
class Home扩展了CI_Controller {
public function index()
{
$data['content']='discover';
$this->load->view('layouts/master', $data);
}
public function categories()
{
$this->load->view('categories');
}
}
点击后,使用AJAX,我可以加载视图 categories.php ,并在不刷新页面的情况下将URL更新到www.mywebsite.com/categories。
但是现在,如果用户直接使用链接登陆或刷新页面,他最终只加载 categories.php 视图,而不是 master.php 视图
如何在直接网址导航或网页刷新时加载master.php和categories.php视图
使用AJAX时只需加载categories.php。
我的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);
}
});
};
谢谢!
答案 0 :(得分:0)
您需要添加
<?php echo site_url()?>
在href中,希望这可以帮助您解决问题
答案 1 :(得分:0)
CodeIgniter输入类提供一些辅助函数来处理用户输入,该类由系统自动初始化,因此无需手动执行。
我总是建议在处理表单和请求时使用此类而不是使用PHP核心输入变量。
要检查CodeIgniter中的Ajax请求,codeIgniter输出类方法类is_ajax_request(),此函数检查是否已设置HTTP_X_REQUESTED_WITH服务器标头,如果set response为true,否则为false表示它将返回布尔响应。 / p>
在您的控制器中,您可以使用以下代码
if (!$this->input->is_ajax_request()) {
echo "Not ajax request";
} else {
echo "Ajax Request";
}
因此,在您的控制器操作中使用上述脚本,您可以识别用户是直接来自还是来自ajax调用。