[smartEditor2] wr_content값 전달이 안돼요 ㅠㅠ 도와주세요!! 채택완료
안녕하세요 ^^
오랜만에 이렇게 인사드립니다. 새해 복 많이 받으세요!
모바일 페이지로 만들어 놓은 게시판에서 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개
답변에 대한 댓글 12개
에디터에서는 id값을 받아서 처리하기때문에 수정안하시길..
write.php에서 editor_html함수 호출구간 한번 보셔야 할 듯 하구요..
스킨에서 따로 처리했을 수도 있어서 스킨쪽에 출력도 보셔야 할테고..
스킨페이지에서 소스보기로 했을 때 name값이 잘 노출되고 있는지도 보셔야 할 듯 해요
해당페이지에서 F12 로 개발자도구 > 콘솔 보시면 에러가 보이고
Mixed Content 에러가 나면서 jquery 를 로드하지 못하고 있는 상태입니다.
[code]
Uncaught ReferenceError: jQuery is not defined
------------------------------------------------------
Uncaught ReferenceError: $ is not defined
[/code]
접근 주소는 https 인데 소스상에서 http 로 호출하는 부분이 존재합니다.
[code]
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
[/code]
먼저 소스상으로 https://ajax.goo ... 처럼 동일한 https 로 적용되도록 하고 확인해보시고
스크립트가 실제로는 없는 부분이 몇개 되는것 같습니다.
소스보기 한다음 .js 로 찾아 직접 링크 클릭해보세요
[code]
/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
[/code]
실제로 스크립트가 존재한다고 해도 동일한 스크립트가 중복 선언된 부분도 있습니다.
또한 스마트에디터에서 jquery 를 사용하는 부분이 있는데
[code]
/plugin/editor/smarteditor2/config.js
[/code]
위 언급한 문제들로 인해 jquery 가 로드되지 못하는 현상이 있을 경우
정상동작을 하지 않을 수 있으니
- https 로 리소스를 불러오도록 확인
- 실제 경로에 스크립트 존재여부 확인
순서로 확인해보시면 좋을것 같습니다.
[code]
oEditors.getById['wr_content'].exec('UPDATE_CONTENTS_FIELD', [])
[/code]
강제로 구동시켜서 submit했더니 잘 들어가네요...
mixed같은 경우에 pc도 동일하게 나고 있는걸 봐서는....
<!-- 리포트2.0 로그분석코드 시작 -->
요 구간한번 빼보실래요?
스크립트 오류가 발생하는 구역은 모두 찾아서 오류를 해결하였는데 동일하게 내용 전달이 되고있지 않습니다 ㅠ
위에서 말씀해주신 코드를 직접 추가하면 안되는걸까요?
oEditors.getById['wr_content'].exec('UPDATE_CONTENTS_FIELD', [])
그래서 스크립트 구간이 먹통되는 구간을 찾아야 하는데 pc버전하고 mobile하고 딱히 차이나는 부분이
리포트2.0 출력구간인 듯 해서 해당 구간을 지워보자는 얘기에요
말씀해주신 script 영역도 주석처리하여 비활성화 해보았는데 해결이 안되네요 ㅠㅠ
댓글을 작성하려면 로그인이 필요합니다.
</p>
<p><form ... onsubmit="return fwrite_submit(this);" .... ></p>
<p>...</p>
<p></form></p>
<p><script> ... function fwrite_submit(f) ... </script></p>
<p>
폼 서브밋시 fwrite_submit 함수를 거쳐야 함에도
건너 뛰는 현상이 있습니다.
소스보기에서 /js/wrest.js 가 두번 중복 선언이 되어 있게 나오는데
여기서 문제가 시작되는것 같습니다.
wrest.js 에는 다음과 같은 코드가 있고
</p>
<p>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;
}
}</p>
<p>$(document).ready(function(){
// onload
wrestInitialized();
});</p>
<p>
위 코드는 문서 안의 모든 <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' 은 완전히 참조를 잃어버리게 되는 상황 같습니다.
답변에 대한 댓글 3개
코드 정리하면 조금 더 수월하게 사용할 수 있을 것 같습니다.
댓글을 작성하려면 로그인이 필요합니다.
</p>
<p>function fwrite_submit(f)
{</p>
<p> alert('abc');</p>
<p>
이런식으로 넣으셔서 경고창 나오는지 확인해 보시구요..
베르만님께서 말씀하신 것 처럼 .js 파일들 중복선언 및 코드가 정리가 좀 필요해 보여요;;
답변에 대한 댓글 3개
일단 말씀해주신 것처럼 경고창이나 콘솔값 찍어서 전달되는지 확인해보겠습니다 ㅎㅎ
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
정상적으로 동작하는 textarea에서는 name이 wr_content로 설정되어 있어서 값이 전달된 것 같습니다.
하지만 스마트에디터에서는 어느 영역에 name값이 적혀있어야하는지 모르겠습니다 ㅠㅠ 해당 내용 조금 더 알려주실 수 있을까요?