将成功消息传输到ajax中的重定向主页本地JS /非JQUERY

问题描述

我有一个任务应用程序,其中管理员有权在主页上编辑任务。更新是在新打开的页面上完成的,然后显示结果“数据已保存”,重定向到主页,并且必须将消息“已编辑”传达给重定向页面上的任务。也许有人可以给我一些有关如何将消息从Ajax传输到重定向页面的建议?

JS:

edit_form.addEventListener('submit',async(event)=>{
    event.preventDefault();
    try {
        const response = await fetch(`/tasks/save/${id}`,{//обработчик action
            method: 'POST',body: new FormData(edit_form)
        });
        let answer = await response.text();
        console.log("ответ сервера " + answer);
        if (answer === true){
            result.innerHTML = TASK_SAVED;
        }else{
        result.innerHTML = TASK_UNSAVED ;
        setTimeout("window.location.replace('/')",2000);
        }
    }catch (error) {
        console.log("ошибка",error);
    }
});

PHP

public function saveAction($id){
    
    $saved_data=$this->request->post();

    $saved =$this->mainservice->saveTask($saved_data,$id);
    header('Content-Type: text/plain');
    if ($saved ==="1"){
        echo "Task saved";
    }if ($saved ==="0")
    echo "task isn't saved";
    }

public function saveTask($saved_data,$id){
                $sql = "UPDATE tasks SET name = :name,email = :email,textarea = :textarea,status= :status where id = :id";
                $params =[
                        'name' => trim($saved_data['name']),'email'=> trim( $saved_data['email']),'textarea'=> trim($saved_data['textarea']),'status' => trim($saved_data['status'][0]),'id'=>$id
                ];
                        $dbConnection = $this->dbConnection->getConnection();
                        return $this->dbConnection->executesql($sql,$params);

解决方法

您可以使用会话来转移消息,然后通过js函数将其称为flash
将您的编辑结果保存在$ _SESSION ['msg']和$ _SESSION ['class']中,以通过引导程序控制味精颜色

在您的php代码中

    function flash() {
        $message = $_SESSION['msg'];
        $class =  $_SESSION['class'];
        if(!empty($message)){
              echo '<div class="bg-'.$class.' msg-flash alert alert-warning alert-dismissible fade show" role="alert"  
              style="transition: all .9s ease; width:100%;" >'.$message.'<button type="button" class="close white " 
              data-dismiss="alert" aria-label="Close">
              <span aria-hidden="true">&times;</span>
              </button></div>';
          }
          //  empty $message after show
          $message = "";
    }

在您的JavaScript代码中

    function flash() {
     // collect result from php session msg by http request
    }

在您的javascript文件中的每个函数以及dom加载后,运行函数都会闪烁