Extra Form
PHP PHP 7.2
CMS Rhymix 2.x

간단한 폼을 만들어보았어요.

아래 소스는 @기진곰님의 새로고침없는 댓글 애드온을 참고하였습니다.

 

<form action="/" method="post" class="rx_ajax" data-callback-success="refreshComments">
<input type="hidden" name="act" value="dispBoardWrite">
<input type="hidden" name="mid" value="temp">
<input type="hidden" name="content" value="">
<input type="hidden" name="document_srl" value="">
<input type="hidden" name="use_html" value="Y">
<input type="text" name="title">
<input type="text" name="content">
<button type="submit">제출</button>
</form>

<script>
// AJAX 제출 성공시 이 함수가 자동으로 호출됩니다. 위에서 이름 적었으니까요.
function refreshComments(data) {
  debugger;
    // 새로 입력한 댓글의 고유번호입니다.
    // 댓글 영역 새로고침 후 해당 댓글을 하이라이트 처리하는 등, 필요에 따라 사용하세요.
    var comment_srl = data.comment_srl;
    // 사용하시는 스킨에서 댓글 영역에 해당하는 선택자(id, class 등)를 여기에 넣어야 합니다.
    var selector = '#comment';
    // 이 예제는 페이지 전체를 새로고침하는 방식이므로, 불필요한 데이터를 많이 불러오지 않도록 레이아웃을 제외합니다.
    // 스킨에 따라서는 일부분만 다시 불러오는 등 다양한 트릭이 가능할 수 있습니다.
    var refresh_url = current_url.setQuery('layout', 'none');
    // 현재 화면을 백그라운드에서 새로고침한 후...
    $.get(refresh_url, function(response) {
        // 기존 페이지에서 댓글 영역을 찾고...
        var old_comment_area = $(selector);
        // 새로고침된 페이지에서도 댓글 영역을 찾아서...
        var new_comment_area = $(response).find(selector);
        // 기존 댓글 영역을 새 것으로 바꿔치기합니다!
        old_comment_area.empty().append(new_comment_area.contents());
    });
}
</script>

 

input에 "제목" "내용" 넣고 제출버튼 누르면

ajax로 post 날아갑니다.

 

debugger에 잡힌 data도 

{error: 0, message: "success", _rx_debug: {…}}

 

일단은 success라고 합니다.

하지만 실제로 글등록은 이루어지지 않습니다.

 

보안사항으로는

SameSite Lax

세션보안키사용 아니오

SSL 전용세션사용 예

SSL 전용쿠기사용 예

CSRF토큰사용 아니오

 

상태입니다.

 

다른 게시판 글쓰기 폼과 비교해봐도

hidden value등 잘 넣어준 것 같은데

혹시 놓치고 있는 부분 눈에 보이실까요

  • profile
    글쓰기시 POST 요청값이 엉뚱한곳으로 요청되지 않앗나요?

    실제로 procBoardInserDocument 가 호출되어야 할텐데 해당 호출값이 전혀 없어보이는데요.

    procBoardInserDocument 이 메소드가 실행되어 글이 정상적으로 등록이 되도록해보는것이 먼저일 것 같습니다.
  • profile profile
    감사합니다. 그쪽으로 좀 더 파볼께요.
  • profile

    윗분 지적대로 act가 틀렸네요. dispBoardWrite는 글쓰기 화면을 보여주는 기능입니다.

    content, document_srl 이름을 가진 hidden input은 삭제하세요.

    특히 content는 아래에 있는 input과 중복이어서 의도치 않은 동작으로 이어질 수 있습니다.

     

  • profile profile
    감사합니다😄