post 값이 없습니다.

post 값이 없습니다.

QA

post 값이 없습니다.

본문

제가 게시판 태그 기능을 가져와서 상품에 붙여보려고

 

itemform.php에 다음과 같이 붙였습니다.

 



<form name="fitemform" action="./itemformupdate.php" method="post" enctype="MULTIPART/FORM-DATA" autocomplete="off" onsubmit="return fitemformcheck(this)">
 
<?php include_once('stopbuy.php'); ?>
<input type="hidden" name="it_7" id="it_7">
<div class="tagList">
    <div class="tagListIpt">
        <ul>
            <?php
            if($it['it_7']){
                
                $tags = explode(',',$it['it_7']);
                for($i=0; $i<count($tags); $i++){
                    echo '<li class="tag">#<span>'.$tags[$i].'</span><i class="material-icons">clear</i></li>';
                }
            }
            ?>
            <li class="tabTxt"><input type="text" id="tagIpt" placeholder="아이디를 입력해주세요!" maxlength="15"></li>
        </ul>            
    </div>
</div>

</form>
 
<script>
function fitemformcheck(f)
{ inputTagList(); }
</script>

 

stopbuy.php



<script>
$(window).ready(function(){
    
    $(document).on('click','.tag > i',function(){
        $(this).parent().remove();
    });
 
    $("#tagIpt").on("keyup", function(event) {
        $(".tagListIpt ul li span").removeClass('overlap');
        if(event.keyCode == 32){
            $(this).val($(this).val().replace(/ /gi, ""));
            inputTag($(this).val());
        }
    });
});
function inputTagList(){
    var linCnt = $(".tagListIpt ul li.tag").length;
    var tag = '';
    for(var i=0; i<linCnt; i++){
        var j = i+1;
        if(!tag){
            tag = $(".tagListIpt ul li:nth-child("+j+") span").html();
        }else{
            tag += ','+$(".tagListIpt ul li:nth-child("+j+") span").html();
        }
    }
    tag = tag.replace(" ", "");
    console.log('after replace : '+tag);
    $("#it_7").val(tag);
}
function chkOverlap(a){
    var linCnt = $(".tagListIpt ul li.tag").length;
    var overlap = false;
    for(var i=0; i<linCnt; i++){
        var j = i+1;
        if(a == $(".tagListIpt ul li:nth-child("+j+") span").html()){
            $(".tagListIpt ul li:nth-child("+j+") span").addClass('overlap');
            overlap = true;
        }
    }
    return overlap;
}

function inputTag(a){
    
    a = a.replace(/ /g, '');
    
    var linCnt = $(".tagListIpt ul li.tag").length;
    
    if(chkOverlap(a) == false){
        if(linCnt < 30){
            var taghtml_ = '';
            
            taghtml_ += '<li class="tag">#<span>';
            taghtml_ += a;
            taghtml_ += '</span><i class="material-icons">clear</i></li>';    
            
            $(".tabTxt").before(taghtml_);
        }else{
            alert('아이디 입력은 최대 30개까지 가능합니다.');    
        }
        
        $("#tagIpt").val('');
    }
}    
</script>


 

그런데 입력폼에서 입력은 잘 되는데 DB에 저장이 되지 않아서 보니

 

포스트값이 없는 걸로 나옵니다.

 

990320945_1601280689.7003.jpg

 

이와 같이 DB에 강제 삽입했을 땐 정상표시 됩니다.

 

저장이 아닌 입력도 마찬가지로 잘 되구요.

 

포스트값 전달이 문제인 듯 한데 뭐가 문제일까요? ㅠㅠ

이 질문에 댓글 쓰기 :

답변 2

아마 다 해보셨겠지만 점검해야될 사항

1) 크롬에서 F12로 개발자모드를 켠 후 ,
태그추가 및 삭제하는 동안 <input type="hidden" name="it_7" id="it_7">
의 값이 어떻게 변하는지 살펴볼것.

2) 올려주신 소스상에서는 
function fitemformcheck(f) { 
    inputTagList(); 

이 호출되는 부분이 안보이는데 (설마 없는건 아니겠죠? 올려주신 소스가 전부는 아닐거라 믿습니다.)
아마 form을 submit 시키는 버튼이 따로 있을 거라 생각이 되네요.
이 부분에서 
function fitemformcheck(f) { 
    inputTagList(); 
    return false;

로 걸고, 콘솔에 console.log('after replace : '+tag); 값이 어떻게 찍히는지 확인할 것.

뭐 이정도네요.

1. 이 부분은 태그 추가하는 동안 값이 변하는게 아니라

submit을 시키면 inputTagList(); 를 실행시켜서 value 값을 주는 부분인가요?

일단 태그 추가하거나 그럴 때는

<input type="hidden" name="it_7" id="it_7"> 부분에 변화가 없어요 ㅠㅠ



2.

<script>
function fitemformcheck(f)
{ inputTagList(); }
</script>

이렇게 되어 있고 본문 폼에 submit이 따로 있어요

너무 방대한 양이라 필요한 부분만 소스 넣은거에요

원본 영카트랑 똑같다고 생각하심 됩니다 ㅠㅠ



3. 콘솔을 어떻게 보는지는 모르겠는데

f12 눌러서 console 부분이라면

console.log('after replace : '+tag); 랑 관련된 부분은 안나와요

무슨 제이쿼리 메세지랑 구글 디벨로퍼 이런 것만 뜨네요

와 진짜 님 덕분에 알게 됐어요

소스가 원인이 아니구요

콘솔 막 어떻게 찍히는지 살펴보다가 알게 된건데

위쪽에

    <?php echo get_editor_js('it_explan'); ?>
    <?php echo get_editor_js('it_head_html'); ?>

이게 있었거든요 스크립트 안에

근데 이 중에서 하나가 본문에 없어서 오류가 나면서 그 뒤에건 다 무시가 됐었나봐요

오류 나는거 지우고 실행하니까 다 돼요 ㅋㅋ 감사해요 ㅠㅠ

야식금지님이 확인하라는거 확인하다가

우연찮게 본문과 상관없는 오류난 소스를 발견했고

그걸 수정했더니 그 오류 밑 줄에 있던 본문 내용도 해결이 됐다 이말이에요 ㅎㅎ

감사해요 좋은 하루되세요! 즐거운 추석되시구요

<input type="text" id="tagIpt" placeholder="아이디를 입력해주세요!" maxlength="15">

name 이 빠졌습니다.

그 부분의 값을 가져다가 스페이스바를 누르면 overlap 클래스가 지워지고

function inputTag(a)에서 <li class="tag">로 바꾸주고

그걸들을 배열한다음 값,값,값... 으로 바꿔줘서 #it_7의 value값으로 해주고

#it_7의 name이 it_7이므로 포스트값은 it_7에서 전달되는 것 아닌가요? ㅠㅠ

답변을 작성하시기 전에 로그인 해주세요.
전체 16,737
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT