php - 清除事件 ID 并调用新的事件 ID 而无需刷新页面
问题描述
我正在解析来自 mysql 的事件数组并将它们列出到登录页面中。用户可以单击按钮向活动组织者发送消息。用户应该在发送电子邮件之前登录,所以我发送了带有 http 请求的事件 ID,并在发送会话时将其返回,而不是通过 ajax 调用以填充模式并发送消息。到目前为止一切都很好,但是用户应该重新加载页面以清除最后一个事件 id 并重新调用一个新的。
下面是我设置的代码,data-jid="<?= $jid; ?>"
它设置了附加到按钮的事件 ID,并在重定向到登录页面后通过 http 请求发送它
<?php if ($this->session->userdata('is_user_login')) : ?>
<button type="button" class="btn btn-secondary btn-block rounded contactBiz" data-toggle="modal" data-jid="<?= $jid; ?>" data-target="#modalApply"><?=trans('apply')?></button>
<?php else:
$last_request_page = (isset($_SERVER['HTTPS']) ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$this->session->set_userdata('last_request_page', $last_request_page);
?>
<a href="<?= base_url(); ?>auth/login?id=<?= $jid; ?>" data-jid="<?= $jid; ?>" class="btn btn-secondary btn-block rounded preapply"><?=trans('apply')?></a>
<?php endif; ?>
在登录页面中,我将事件 ID 的会话设置如下:
<?php
if(isset($_GET['id'])) {
$this->session->set_userdata('event_id', $_GET['id']);
}
?>
现在,在用户重定向回来后,最后点击的按钮将被填充以使用下面的 javascript 调用发送消息。
<?php if (!empty($this->session->userdata('event_id'))) {
$sID = $this->session->userdata('event_id'); ?>
$(document).ready(function(){
$(".contactBiz").trigger("click");
});
<?php } ?>
<?php if ($this->session->userdata('is_user_login')) : ?>
$('.contactBiz').click(function(e){
e.preventDefault();
var id;
var csrfName = '<?php echo $this->security->get_csrf_token_name();?>';
var csrfHash = '<?php echo $this->security->get_csrf_hash();?>';
var data = {
<?php if (!empty($this->session->userdata('event_id'))) { ?>
id: <?= $sID; ?>,
<?php } else { ?>
id: $(this).attr('data-jid'),
<?php } ?>
uid: <?= $this->session->userdata('user_id'); ?>,
};
data[csrfName] = csrfHash;
$.ajax({
cache: false,
url: base_url + 'job-data',
dataType: 'json',
type: 'POST',
data: data,
error: function(jqXHR, textStatus, errorThrown) {
alert('Something is wrong');
},
success: function(data) {
console.log(data);
$("#subject").val(data[0].title);
$(".messageTitle").empty().append( " <?= trans('message'); ?> " + data[0].name + " about " + data[0].title );
p1 = data[0].business_id;
p2 = data[0].email;
<?php $this->session->unset_userdata('event_id'); ?>
}
});
});
<?php endif; ?>
现在一切都很好,最后点击的按钮是使用事件 id 填充的,data-jid="<?= $jid; ?>"
但是接下来发生的事情是用户被所有按钮重复的相同事件 id 卡住了。
我在 ajax 调用中用于定义 id 的解决方案如下:
<?php if (!empty($this->session->userdata('event_id'))) { ?>
id: <?= $sID; ?>,
<?php } else { ?>
id: $(this).attr('data-jid'),
<?php } ?>
在成功的 ajax 响应之后,我正在清除会话,如下所示:
<?php $this->session->unset_userdata('event_id'); ?>
我认为我的错误在这里,但是我找不到更好的解决方案,非常感谢您的建议,谢谢!
解决方案
推荐阅读
- python - 创建 TwilioClient 需要凭据
- patch - 图像预测后图像的断裂和拼接
- mysql - Laravel UUID 作为主键,ID 作为外键
- google-cloud-dataproc - 我应该在哪里将 jar 放在 dataproc 集群上,以便 gcloud dataproc 作业提交 spark 使用它们?
- c++ - 初始化类的两种方法?
- python - Python 比较数据表
- javascript - JS - 比较单个数值:
- r - 改变日期以创建小于时间戳的所有时间的列
- docker - 如何将 Oracle 容器注册表与 Azure DevOps 集成?
- android - RecyclerView 滚动很紧张