我正在尝试使用jquery使用.ajax()更新数据库。这个想法是可以通过在管理员帐户中设置数据库中的标志(bool)来启用或禁用“用户”,脚本“activate.php”只是简化数据库插入。
这确实有效,但只有在我点击触发器三次后才显然我做错了什么!
代码如下:
$('.changeStatus').click(function(){
var currentStatus = $('#activeDisp').attr('value');
var activate = "";
var changeText = "";
var id = $('#idDisp').attr('value');
switch(currentStatus){
case "0":
var activate = 1;
var changeText = "disable this user";
$('#activeDisp').val(activate);
break;
case "1":
var activate = 0;
var changeText = "enable this user";
$('#activeDisp').val(activate);
break;
}
var dataString = 'id='+ id +'&active='+ activate;
$.ajax({
type: "POST",
url: "activate.php",
data: dataString,
success: function(html) {
$('.changeStatus').html("<a href='#' class='changeStatus'>"+ changeText +"</a>");
//alert(html);
}
});
return false;
});
#activeDisp和#idDisp是文本框,当页面加载时,PHP会插入这些值。
欢呼声
答案 0 :(得分:2)
<强>更新强>
你的代码重写应该是这样的:
$(function() {
$('.changeStatus').live('click',function() {
var currentStatus = $('#activeDisp').val();
var activate = (currentStatus == 1) ? 0: 1;
var changeText = (currentStatus == 1) ? "disable this user": "enable this user";
var id = $('#idDisp').val();
$('#activeDisp').val(activate);
var dataString = 'id=' + id + '&active=' + activate;
$.ajax({
type: "POST",
url: "activate.php",
data: dataString,
success: function(html) {
$('.changeStatus').text(changeText);
}
});
return false;
});
});
注意:如果您将currentStatus
设置为返回等于active
的外观,则可以减少代码。