【发布时间】:2018-11-12 20:14:19
【问题描述】:
我正在创建一个订阅/取消订阅复选框,注册用户将默认订阅。如果用户取消选中(取消订阅)复选框,它将在confirm() jquery 函数中要求确认,如果它返回 true,ajax 请求将更新数据库中的值,并切换复选框以在下次单击时运行 subscribe 函数(无需重新加载页面)。
我的尝试
PHP
<?php if($newsletter_value){ ?>
<input id="checkbox" type="checkbox" name="checkbox" value="<?php echo $newsletter_value; ?>" onclick="unsubscribe();" checked>
<span class="label-text"></span>
<? } else{ ?>
<input id="checkbox" type="checkbox" name="checkbox" value="<?php echo $newsletter_value; ?>" onclick="update_newsletter(1);">
<span class="label-text"></span>
<? } ?>
JavaScript
function unsubscribe(){
var c = confirm("Are you sure?");
if(c){
update_newsletter(0);
}else{ $('#checkbox').prop('checked',true)}
}
function update_newsletter(newsletter){
url = '/updateNewsletter&newsletter='+newsletter ;
$.ajax({
type: 'get',
url: url,
dataType: 'html',
success: function() {
$('#success').append("<div class='alert alert-success'><i class='fa fa-check-circle'></i> You have successfully modified your subscription <button type='button' class='close' data-dismiss='alert'>×</button></div>");
},
error: function(xhr, ajaxOptions, thrownError) {
alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
}
问题
在第一个页面加载时,页面从控制器获取newsletter_value 并显示相应的复选框,但是一旦用户单击它并同时再次单击,相同的功能将与第一次单击时一样工作(功能没有切换)。
希望你能理解。并感谢您的帮助。
【问题讨论】:
-
confirm()只会在用户退订时运行。
标签: javascript php jquery ajax checkbox