2026, 새로운 도약을 시작합니다.

AJAX alert창 후 reload

안녕하세요. 어제 AJAX 후 스크롤 고정 관련되어서 질문을 올렸는데요! 

(https://sir.kr/qa/470670?&vpage=1#answer_470717)

추가적인 질문이 있어서 질문 드립니다!

Copy




        window.onload = function(){

            var strCook = document.cookie;

            //alert(strCook);

            if(strCook.indexOf("!~")!=0) {

                var intS = strCook.indexOf("!~");

                var intE = strCook.indexOf("~!");

                var strPos = strCook.substring(intS+2,intE);

 

                document.getElementById("product_table").scrollTop = strPos;

            }

        }

 

        function SetDivPosition(){

            var intY = document.getElementById("product_table").scrollTop;

            document.title = intY;

            document.cookie = "yPos=!~" + intY + "~!";

        }



위의 코드를 header 내에 입력해주니까, 새로고침해도 스크롤이 잘 고정되는 것을 확인했습니다.

다만, AJAX로 넘어간 페이지에서 필요한 기능을 끝낸 후 다시 돌아왔을 때, alert창이 뜨지 않고 페이지가 새로고침 되는 것을 확인했습니다.

Copy



 
    
        
            
                ×
                품명 수정
            
            
                
                  // 관련 코드
                
            
            
                닫기
            
        
    



$(document).ready(function(){
    // '수정' 모달 창에서 '수정' 버튼 눌렀을 때
    $('#insert_form').on('submit', function(event) {
        event.preventDefault();     
        $.ajax({           
           url:"index_main_update.php",
           method:"POST",
           data:$('#insert_form').serialize(),
           success:function(data) {
               $('#insert_form')[0].reset();
               $('#insert_data_Modal').modal('hide');
               window.location.reload();  // -> reload로 작성해주면 스크롤 적용은 되지만, alert창이 뜨지 않음
               //$('#product_table').html(data);      // product_table 은 DB의 데이터가 들어있는 table 
                   // --> 이 코드를 작성하면 ajax 후 새로고침 시 스크롤 적용이 안됨
           }
      })
});


// index_main_update.php

Copy



     // DB 연결 후 수정하는 쿼리 존재
     //
     //
     // 쿼리 적용 후
    if (sqlsrv_query($connect, $insert_H_query)) {  
        $output .= 'alert(`해당 품명이 수정되었습니다.`);';
        $output .= 'location.href=`index_main.php`';
    }

혹시 AJAX alert 창 후 reload 하는 방법이 있을까요?

답변 2개

리로드 하는 바로 위에서 알럿창 띄우면 될거 같은데요.

alert("TEST");
window.location.reload();

위처럼 적용하면 기본적으로 alert 실행이 되고나서 리로드가 됩니다.

그러니 DB처리 후 리턴해주는 데이터를 리로드 처리하기 전에 실행 해주면 될거에요

다만 현재 리턴 데이터를 기준으로는 조금 수정이 필요할듯 보입니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

비동기 결과값이 도착 하기전에 아래 리로드 함수가 먼저 실행되는 경우가 있어서 결과값을 제이슨형태로 리턴하고 해당결과값에 따라 success함수에서 처리하는 형식이 더 낫다고 어제 말씀 드린거에용

저런 경우까지 생각하면 promise 나 async / await 를 이용해 함수실행 우선순위를 정해줘야할거에요

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고