我正在使用codeigniter3和twitter引导程序开发一个注册和登录应用程序。
我有一个“users”mysql表和相应的“users.php”视图,该视图以html格式呈现“users”表,如下图所示:
引导表中的“actions”列在每一行上都有一个“enable”或“disable”按钮,具体取决于用户的状态。视图这部分的代码是:
// Status column
<td>
<?php if ($user->active == 1) {
echo '<span class="text-success">' . 'Enabled' . '</span>';
} else {
echo '<span class="text-danger">' . 'Disabled' . '</span>';
}
?>
</td>
// Enable/Disable buttons
<?php if ($user->active == 1) { ?>
<a href="<?php echo base_url(); ?>users/deactivate/<?php echo $user->id ?>" title="Deactivate" class="btn btn-success btn-xs state-change" data-role="deactivate" data-id="<?php echo $user->id ?>"><span class="glyphicon glyphicon-ban-circle"></span> Disable</a>
<?php } else { ?>
<a href="<?php echo base_url(); ?>users/activate/<?php echo $user->id ?>" title="Activate" class="btn btn-success btn-xs state-change" data-role="activate" data-id="<?php echo $user->id ?>"><span class="glyphicon glyphicon-ok"></span> Enable</a>
<?php } ?>
我通过ajax在不刷新页面的情况下激活/停用用户:
$('.state-change').on('click', function(evt) {
evt.preventDefault();
var id = $(this).data('id');
var role = $(this).data('role');
if (role == "activate") {
var stateUrl = 'users/activate/';
} else {
var stateUrl = 'users/deactivate/';
}
$.ajax({
url: stateUrl + id,
method: 'GET',
dataType: 'php',
success: function(){
console.log(id);
console.log(role);
}
});
});
问题是,有关用户状态的数据不会返回到视图,“status”和“actions”列也不会正确呈现。
我希望我不必使用jquery的 html()
方法或类似的东西。
function(){
console.log(id);
console.log(role);
//change columns html here
}
如何“动态”更新视图?
2条答案
按热度按时间ss2ws0br1#
上面的答案已经足够了-您必须根据您的场景使用javascript。问题似乎在于从动态网页到动态html的飞跃。
请在此处阅读总结的最后一行:https://en.wikipedia.org/wiki/dynamic_html
tjjdgumg2#
取回数据后,需要使用javascript修改表。因为您已经在使用jquery了,所以您可以使用一些工具使之非常简单。
您的问题可以分为两个步骤:确定要更新的页面的正确部分,然后修改感兴趣的单元格。
由于传递给函数的鼠标事件包含对所单击对象的引用,因此可以简化对正确单元格的标识。
为了更容易地找到table的正确部分,最好给每个
<td>
a类:现在很容易找到要修改的内容。
下面是您的ajax调用,其中添加了一些内容来重新绘制有问题的单元格:
我会留下按钮栏让你练习:)。
edit:您还可以使用非jquery方法操纵dom,这些方法可能更符合您的喜好。这就是jquery在幕后所做的。
您可以在mdn上阅读更多关于它们的信息。
仔细研究上述链接中的文档可能会发现一些方法,使您的特定案例更有效。请记住,这与jquery是一样的
html()
方法确实可以-或者Angular 或任何其他-虽然它使您远离html,但在本例中它并没有真正改进您的代码。我真的很讨厌html,但它是我们得到的工具。注意,php还有dom库;如果你想的话,你也可以用它们来构建你的原始页面,并且永远使用html。但我不推荐,除非在某些情况下。