我正在创建一个类似于Trello工具的带有一组复选框的列表,数据是从MySql数据库中提取的。
当用户选中其中一个复选框将活动标记为已完成时,我使用XMLHttpRequest请求异步调用php路由,并在数据库中将任务状态编辑为"已完成"(从而避免页面刷新)。
此外,我还有一个引导进度条,它根据状态"已完成"、"待处理"和"总计"来计算表中的行数,我使用这些数据来动态填充进度条。
然而,这个栏只在我进入页面或刷新它时更新,我希望它与XMLHttpRequest请求一起更新,XMLHttpRequest请求在每次复选框发生任何更改时触发。
我的问题是:有没有办法根据XMLHttpRequest请求填写进度条信息?
//CODE RESPONSIBLE FOR MAKING THE ASYNCHRONOUS REQUEST TO EDIT THE STATUS OF THE CHECKBOX IN THE DATABASE
function checkRealizado(url) {
let checkRealizado = new XMLHttpRequest();
checkRealizado.open('POST', url)
checkRealizado.onreadystatechange = () => {
if(checkRealizado.readyState == 4 && checkRealizado.status == 200) {
}
}
checkRealizado.send()
}
//CHECKBOX RESPONSIBLE FOR ACTIVATING THE XMLHTTPREQUEST FUNCTION
<label class="marcarConcluido" id="marcarConcluido" for="chkPassport">
<input onclick="checkRealizado('/tarefa?acao=checkRealizado&id='+<?= $checklist->id //DATA EXTRACTED FROM THE DATABASE, ALL OK HERE ?>)" class="form-check-input" id="chkPassport" style="margin-right: 8px" type="checkbox">
<?= $checklist->checklist //DATA EXTRACTED FROM THE DATABASE, ALL OK HERE ?>
</label>
//HTML CODE OF MY PROGRESS BAR
<div id="progressBar" class="progress text-muted" style="height: 6px;" role="progressbar" aria-label="Basic example" aria-valuenow="25" aria-valuemin="0" aria-valuemax="<?= $this->view->getLinhasCheck ?>">
<progress class="text-muted progress-bar w-100" style="background-color: #fff; height: 6px;" value="<?= $this->view->getLinhasCheckRealizada ?>" max="<?= $this->view->getLinhasCheck ?>"></progress>
</div>
/// $this->view->getLinhasCheckRealizada This variable is responsible for filling in the data according to the number of rows in the database table, everything working so far
// $this->view->getLinhasCheck This variable is responsible for filling in the data according to the number of rows in the database table, everything working so
1条答案
按热度按时间relj7zay1#
把你的问题分解成几个部分。
style="width: 25%"
。this.responseText
。所以把这些都放在一起。
您的Javascript
您的PHP
注解
例如,如果请求失败,您可能希望返回/显示一条错误消息。目前,如果发生这种情况,代码将尝试使用该错误消息作为百分比,这是行不通的。一些搜索在这里找到了大量关于如何使用JSON与XMLHttpRequest的答案,例如:Parsing JSON from XmlHttpRequest.responseJSON
fetch()
来代替XMLHttpRequest:Fetch API vs XMLHttpRequest