[smartEditor2] wr_content값 전달이 안돼요 ㅠㅠ 도와주세요!!

[smartEditor2] wr_content값 전달이 안돼요 ㅠㅠ 도와주세요!!

QA

[smartEditor2] wr_content값 전달이 안돼요 ㅠㅠ 도와주세요!!

답변 3

본문

안녕하세요 ^^
오랜만에 이렇게 인사드립니다. 새해 복 많이 받으세요!

모바일 페이지로 만들어 놓은 게시판에서 smartEditor2를 사용하여 글을 작성하면 내용이 전달되지 않습니다. ( 스마트 에디터를 사용하지 않고 textArea태그로 값을 전달하면 정상적으로 전달됩니다! )

write.php에서 글을 입력하고 전송하면 [내용을 입력하세요.] 라는 Alert창이 뜹니다. 

(참고로! pc 페이지에서 동일한 스킨으로 적용하여 css만 다르게 사용하고 있는데 pc에서는 내용(글자와 이미지)이 모두 정상적으로 전달되고 있습니다!)

 

bbs/write_update.php에서 $_POST로 넘어오는 내용을 print_r해서 확인해봤는데 
제목으로 사용한 input태그의 값[wr_subject]은 전달이 되었지만 내용인 [wr_content]는 비어있었습니다.

 

기본 베이직 스킨의 write.skin.php를 이용해도 동일한 현상이 나타나는데 모바일에서 스마트 에디터2를 사용하여 내용값을 전달하는 방법을 알고싶습니다!  

많은 고수님들의 관심과 도움 부탁드립니다 ^^

이 질문에 댓글 쓰기 :

답변 3

모바일 스킨구간에 textarea의 name이 wr_content이 아닐수도 있겠네요

말씀해주신 영역 찾아보았습니다!
정상적으로 동작하는 textarea에서는 name이 wr_content로 설정되어 있어서 값이 전달된 것 같습니다.

하지만 스마트에디터에서는 어느 영역에 name값이 적혀있어야하는지 모르겠습니다 ㅠㅠ 해당 내용 조금 더 알려주실 수 있을까요?

에디터쪽은 작업할 일이 없기 때문에 에티터쪽 파일을 문제가 아닐 듯 싶구요
에디터에서는 id값을 받아서 처리하기때문에 수정안하시길..
write.php에서 editor_html함수 호출구간 한번 보셔야 할 듯 하구요..
스킨에서 따로 처리했을 수도 있어서 스킨쪽에 출력도 보셔야 할테고..
스킨페이지에서 소스보기로 했을 때 name값이 잘 노출되고 있는지도 보셔야 할 듯 해요

우선 스크립트 오류가 나고 있어서 그것부터 확인하시는게 좋을것 같습니다.
해당페이지에서 F12 로 개발자도구 > 콘솔 보시면 에러가 보이고
Mixed Content 에러가 나면서 jquery 를 로드하지 못하고 있는 상태입니다.


Uncaught ReferenceError: jQuery is not defined
------------------------------------------------------
Uncaught ReferenceError: $ is not defined


접근 주소는 https 인데 소스상에서 http 로 호출하는 부분이 존재합니다.

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>


먼저 소스상으로 https://ajax.goo ... 처럼 동일한 https 로 적용되도록 하고 확인해보시고

스크립트가 실제로는 없는 부분이 몇개 되는것 같습니다.
소스보기 한다음 .js 로 찾아 직접 링크 클릭해보세요

/theme/basic/js/jquery-1.10.2.min.js
/theme/basic/js/jquery-ui.js
/theme/basic/js/lib.js
/theme/basic/js/quick.js
/theme/basic/js/jquery-1.10.2.min.js?ver=210618
/theme/basic/js/jquery-ui.js?ver=210618

실제로 스크립트가 존재한다고 해도 동일한 스크립트가 중복 선언된 부분도 있습니다.

또한 스마트에디터에서 jquery 를 사용하는 부분이 있는데

/plugin/editor/smarteditor2/config.js

위 언급한 문제들로 인해 jquery 가 로드되지 못하는 현상이 있을 경우
정상동작을 하지 않을 수 있으니

- https 로 리소스를 불러오도록 확인
- 실제 경로에 스크립트 존재여부 확인

순서로 확인해보시면 좋을것 같습니다.


스크립트 오류가 발생하는 구역은 모두 찾아서 오류를 해결하였는데 동일하게 내용 전달이 되고있지 않습니다 ㅠ

위에서 말씀해주신 코드를 직접 추가하면 안되는걸까요?

oEditors.getById['wr_content'].exec('UPDATE_CONTENTS_FIELD', [])

저 코드는 폼전송시 자동으로 동작하게 되어있는데 지금 사이트에서는 전송버튼을 눌렀을 때 자바스크립트와 관련없이 폼이 그냥 전송되고 있는거에요
그래서 스크립트 구간이 먹통되는 구간을 찾아야 하는데 pc버전하고 mobile하고 딱히 차이나는 부분이
리포트2.0 출력구간인 듯 해서 해당 구간을 지워보자는 얘기에요


function fwrite_submit(f)
{
  alert('abc');

이런식으로 넣으셔서 경고창 나오는지 확인해 보시구요..

베르만님께서 말씀하신 것 처럼 .js 파일들 중복선언 및 코드가 정리가 좀 필요해 보여요;;


<form ... onsubmit="return fwrite_submit(this);" .... >
...
</form>
<script> ... function fwrite_submit(f) ... </script>

 

폼 서브밋시 fwrite_submit 함수를 거쳐야 함에도

건너 뛰는 현상이 있습니다.

 

소스보기에서 /js/wrest.js 가 두번 중복 선언이 되어 있게 나오는데

여기서 문제가 시작되는것 같습니다.

 

wrest.js 에는 다음과 같은 코드가 있고


function wrestInitialized()
{
    for (var i = 0; i < document.forms.length; i++) {
        if (document.forms[i].onsubmit) {
            document.forms[i].oldsubmit = document.forms[i].onsubmit;
        }
        document.forms[i].onsubmit = wrestSubmit;
    }
}
$(document).ready(function(){
    // onload
    wrestInitialized();
});

위 코드는 문서 안의 모든 <form> 요소에 대해 필수입력 항목 일괄처리를 위한 

onsubmit 이벤트 핸들러를 인터셉트, 후킹하는 동작이 정의되어 있습니다.

 

이 부분이 중복 호출 될경우

 

처음 /js/wrest.js 에서

form.oldsubmit = fwrite_submit, form.onsubmit = wrestSubmit

 

다음 /js/wrest.js 에서

form.oldsubmit = wrestSubmit, form.onsubmit = wrestSubmit

 

form 의 original onsubmit 인 'return fwrite_submit' 은 완전히 참조를 잃어버리게 되는 상황 같습니다.

  말씀해주신 것처럼 wrest.js가 중복되어서 값이 날아간것 같습니다. wrest.js를 중복시키지 않고 1회만 출력하니까 정상적으로 값이 전달되었습니다! ㅎㅎ 감사합니다 ^^

코드 정리하면 조금 더 수월하게 사용할 수 있을 것 같습니다.

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 61,342
© SIRSOFT
현재 페이지 제일 처음으로