我正在构建一个使用 AJAX 和 jQuery 的 Codeigniter 应用程序。在我的一种观点中,我有:
意见/用户/index.php
<?php echo anchor('users/edit', 'Edit Profile', array(
'class' => 'user-link',
'id' => 'edit'
));?>
<?php echo anchor('users/private_messages', 'Private Messages', array(
'class' => 'user-link',
'id' => 'private_messages'
));?>
<div id="ajax-loader"><img src="<?php echo base_url();?>img/loading.gif"/></div>
<div id="result"></div>
<script type="text/javascript">
$(function(){
$('.user-link').click(function(event) {
event.preventDefault();
$.ajax({
url: $(this).attr('href'),
type: 'POST',
async: true,
beforeSend: function(){
$('#result').hide();
$('#ajax-loader').show();
},
error: function(xhr, status, thrown){
alert(xhr + ',' + status+ ',' + thrown);
},
complete: function(){
$('#ajax-loader').hide();
},
success: function(data) {
$('#result').empty().append(data);
$('#result').fadeIn('slow');
}
});
});
});
</script>
这很好用,它获取href
每个锚点的值并在点击时加载一个方法。现在我想做的是能够通过访问id
锚点来使用 AJAX 加载方法,例如,如果我访问
http://appdomain.com/users/index#edit
我想获取该href
锚点的值并用 AJAX 调用它。这背后的原因是我在Edit
控制器中设置了一些重定向,指向users/index
并且我需要在刷新后使用 AJAX 再次加载该方法,所以我在想类似的事情:
redirect(users/index#edit)
这实用吗?我需要一种在页面加载时启动对特定方法的 AJAX 调用的方法。任何建议将不胜感激。
编辑 :
使用 Javascript 获取哈希值然后检查它似乎有效:
var hash = window.location.hash;
var id = hash.substring(0);
if(id == '#edit' || id == '#private-messages'){
$.ajax({
url: $(id).attr('href'),
type: 'POST',
async: true,
beforeSend: function(){
$('#result').hide();
$('#ajax-loader').show();
},
error: function(xhr, status, thrown){
alert(xhr + ',' + status+ ',' + thrown);
},
complete: function(){
$('#ajax-loader').hide();
},
success: function(data) {
$('#result').empty().append(data);
$('#result').fadeIn('slow');
}
});
}