dot*_*dot 1 php ajax codeigniter
我的控制器中有一个方法,可以让用户检查称为“POE 状态”的内容。这将返回一个字符串,该字符串显示在我的视图的 div 标签中。我还提供了 2 个按钮。一个用于启用 POE,另一个用于禁用。启用和禁用命令都会返回 POE 状态。因此,我尝试使用 ajax 在单击两个按钮之一后使用新状态更新页面。
我注意到,这两个按钮都会在页面第一次加载时起作用。但是在进行初始 ajax 调用并更新视图后,如果我尝试再次使用按钮,则什么也不会发生。
我有以下 HTML:(我不包括所有 html,只包括我认为重要的部分......)
<div class="span6" id="clientajaxcontainer">
<h2>Port POE Status: Port <?php echo $portname;?></h2>
<p><p>
<?php echo $poeStatus;?>
<button class="btn" id="enable">Enable POE</button>
<button class="btn" id="disable">Disable POE</button>
</div>
Run Code Online (Sandbox Code Playgroud)
然后我有以下 JavaScript:
<script>
//Enable POE button
$('#enable').click(function() {
alert('in POEOn');
console.log('On');
//disbled button until ajax request is done.
$(this).attr("disabled","disabled");
$('#disable').attr("disabled","disabled");
var htmlstring;
$.ajax({
url:"<?php echo site_url('controller/poeOn);?>",
type:'POST',
dataType:'text',
success: function(returnDataFromController) {
htmlstring = "<h2>Port POE Status: Port " + $('#port').val() + "</h2><p><p>" + returnDataFromController + "<button class='btn' name='enable' id='enable'>Enable POE</button> <button class='btn' name='disable' id='disable'>Disable POE</button>";
alert(htmlstring);
$('#clientajaxcontainer').html(htmlstring);
console.log(htmlstring);
}
});
//re-enable the buttons.
$(this).removeAttr("disabled");
$('#disable').removeAttr("disabled");
});
//Disable POE button
$('#disable').click(function() {
alert('in POEoff');
console.log('Off');
//disbled button until ajax request is done.
$(this).attr("disabled","disabled");
$('#enable').attr("disabled","disabled");
$.ajax({
url:"<?php echo site_url('controller/poeOff);?>",
type:'POST',
dataType:'text',
success: function(returnDataFromController) {
htmlstring = "<h2>Port POE Status: Port " + $('#port').val() + "</h2><p><p>" + returnDataFromController + "<button class='btn' name='enable' id='enable'>Enable POE</button> <button class='btn' name='disable' id='disable'>Disable POE</button>";
alert(htmlstring);
$('#clientajaxcontainer').html(htmlstring);
console.log(htmlstring);
}
});
//re-enable the buttons.
$(this).removeAttr("disabled");
$('#enable').removeAttr("disabled");
});
</script>
Run Code Online (Sandbox Code Playgroud)
你能告诉我哪里错了吗?谢谢。
问题是您没有为按钮创建“实时”绑定,一旦您调用,$('#clientajaxcontainer').html(htmlstring);您就将按钮替换为没有单击绑定的新元素。试试这个:
$('#enable').live('click', function() {
//...
}
$('#disable').live('click', function() {
//...
}
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 jQuery 1.8,您可以使用该on()方法而不是live(). 那看起来像这样:
$(document).on('click', '#enable', function() {
//...
}
$(document).on('click', '#disable', function() {
//...
}
Run Code Online (Sandbox Code Playgroud)
这是相关文档:
| 归档时间: |
|
| 查看次数: |
1654 次 |
| 最近记录: |