테스트 사이트 - 개발 중인 베타 버전입니다

ajax 다중 리턴값 오류... 좀 어렵습니다 ㅜㅜ 채택완료

하남시불빠따 4년 전 조회 3,445

</p>

<p><?php</p>

<p>include_once "./_common.php";

$submit_id = $_POST['submit_id'];

$test = $_POST['test'];

$sql = "update g5_submit set checking = '$test' where submit_id = '$submit_id' ";

$result = sql_query($sql);

$sql2 = "select * from g5_submit where submit_id = '$submit_id' ";

$result2 = sql_fetch($sql2);</p>

<p>if($result2['checking'] == 1){

    echo "검토완료"; 

}

else echo "검토중"; 

?></p>

<p>

이건 ajax로 호출한 php이고

 

</p>

<p>        <div>검토: 

        <label class="switch">

        <?php if($row['checking'] == 1) {

                $checked = "checked";

                } else {

                $checked = "";

                }

        ?>

        <input type="checkbox" class="checkBoxId" value="<?php echo $row['submit_id']; ?>" <?php echo $checked; ?>>

        <span class="slider round"></span>

        </label>

        </div></p>

<p>        <?php if($row['checking'] == 1) { ?>

        <span id="result<?php echo $row['submit_id']; ?>">검토완료</span>

        <?php } else { ?>

        <span id="result<?php echo $row['submit_id']; ?>">검토중</span>

        <?php } ?>

        

        <div id="result_div<?php echo $row['submit_id']; ?>">

        <?php if($row['checking'] == 0) { ?>

        <button>거절하기</button>

        <?php } ?>

        </div></p>

<p><script></p>

<p>$(function() {

    $(".checkBoxId").change(function() {

        var param=""; 

        var value = $(this).val();

        var aa = "#result";

        var result_span = aa.concat(value);

        

        

        if($(this).is(":checked")) {

            this.param = 1;

        } else {

            this.param = 0;

        }

        $.ajax({

            url : "<a href="http://suyong0507.dothome.co.kr/bbs/checking.php"," target="_blank" rel="noopener noreferrer">http://suyong0507.dothome.co.kr/bbs/checking.php",</a>

            type : "post",

            data : {

                submit_id : value,

                test : this.param

            },

            success : function(res) {

                if(res) {

                    $(result_span).text(res);

                }

            }

        });

    });

});</p>

<p></script></p>

<p>

본문입니다.

원래 코드입니다. ajax 리턴값이 하나죠(echo)

 

여기서 $result2['checking'] == 0일때 '검토중'과 함께 

다른 div인, <div id="result_div<?php echo $row['submit_id']; ?>"></div>에

<button>거절하기</button> 라는 코드를 같이 리턴시키고 싶어서 검색하고 아래 링크처럼 했습니다.

다중 리턴값을 주기 위해서 배열을 활용했죠.

https://stackoverflow.com/questions/4594265/multiple-return-values-from-php-with-jquery-ajax/4594337">https://stackoverflow.com/questions/4594265/multiple-return-values-from-php-with-jquery-ajax/4594337

 

 

</p>

<p>        <div>검토: 

        <label class="switch">

        <?php if($row['checking'] == 1) {

                $checked = "checked";

                } else {

                $checked = "";

                }

        ?>

        <input type="checkbox" class="checkBoxId" value="<?php echo $row['submit_id']; ?>" <?php echo $checked; ?>>

        <span class="slider round"></span>

        </label>

        </div></p>

<p>        <?php if($row['checking'] == 1) { ?>

        <span id="result<?php echo $row['submit_id']; ?>">검토완료</span>

        <?php } else { ?>

        <span id="result<?php echo $row['submit_id']; ?>">검토중</span>

        <?php } ?>

        

        <div id="result_div<?php echo $row['submit_id']; ?>">

        <?php if($row['checking'] == 0) { ?>

        <button>거절하기</button>

        <?php } ?>

        </div></p>

<p><script></p>

<p>$(function() {

    $(".checkBoxId").change(function() {

        var param=""; 

        var value = $(this).val();

        var aa = "#result";

        var result_span = aa.concat(value);

        

        

        if($(this).is(":checked")) {

            this.param = 1;

        } else {

            this.param = 0;

        }

        $.ajax({

            url : "<a href="http://suyong0507.dothome.co.kr/bbs/checking.php"," target="_blank" rel="noopener noreferrer">http://suyong0507.dothome.co.kr/bbs/checking.php",</a>

            type : "post",

            data : {

                submit_id : value,

                test : this.param

            },</p>

<p>            success : function(res) {

                if(res) {

                    $(#result_span).text(res.aaa);</p>

<p>                    $(#result_div).html(res.ccc);

                }

            }</p>

<p></script></p>

<p>

 

</p>

<p><?php</p>

<p>include_once "./_common.php";

$submit_id = $_POST['submit_id'];

$test = $_POST['test'];

$sql = "update g5_submit set checking = '$test' where submit_id = '$submit_id' ";

$result = sql_query($sql);

$sql2 = "select * from g5_submit where submit_id = '$submit_id' ";

$result2 = sql_fetch($sql2);</p>

<p>if($result2['checking'] == 1) {</p>

<p>echo json_encode(array("aaa" => "검토완료", "ccc" => ""));</p>

<p>}</p>

<p>else if(result2['checking'] == 0){</p>

<p>echo json_encode(array("aaa" => "검토중", "ccc" => "<div><button>거절하기</button></div>"));</p>

<p>}</p>

<p>?></p>

<p>

 

1. 코드에 틀린부분이 있나요?

(기존코드는 잘됬습니다)

 

2. json_encode을 반드시 써야되나요?

 

검토상태 바꾸는 체크박스는 아예 작동조차 안하네요...

코드가 좀 복잡할거 같은데 한번씩 봐주셔서 감사합니다 ㅜㅜ

기존 코드는 잘됬었습니다...

 

 

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

답변 3개

채택된 답변
+20 포인트
Policia
4년 전

배열로 넘기는것이면 json을 활용하는것이 맞습니다 json_encode로 php에선 넘기고

ajax에선 dataType: "json" 선언을 해주세요 그래야 json데이터를 정상적으로 받을수있습니다

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

답변에 대한 댓글 1개

하남시불빠따
4년 전
말씀주신 dataType: "json" 선언이 빠진거랑
계속 오류 찾는중에 "aaa" => "검토중" 이게 아니라 "aaa"=>"검토중" 였네요 ㄷㄷ;;;
일단 문제는 해결했습니다. 감사합니다

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

4년 전

저도 하남시불빠따님 같은 상황인데 dataType: "json"하고 "

aaa"=>"bbb" 이런식으로 붙여쓰기까지 했는데 내부서버 오류라고 500이 뜨네요..

 

 

 

그래서 혹시 몰라서
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
를 붙였는데 에러는 사라지고 데이터는 안넘어오네요.. (계속 'data 없음'이라는 alert만 떠요..)

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

답변에 대한 댓글 1개

하남시불빠따
4년 전
흠... 일단 ajax로 호출하는 페이지에서 POST 값이 잘 넘어오는지 echo 찍어보시고
ajax로 호출하는 부분만 서버 500 오류 뜨는거죠? 그러면 ajax 페이지를 못불러온거 같은데
ajax에서 리턴하는 값을 text( )나 html( )로 받아보세요

원래페이지 -> ajax
ajax -> 원래페이지

일때 서로 데이터가 주고받아지는 먼저 간단하게 테스트를 해보셔야될거같아요
코드가 복잡해보여서 ㅜㅜ 한눈에 뭐가 오고가고 하는지 헷갈리네요,,,

ajax 페이지에서 if (!defined('_GNUBOARD_')) exit; 이거쓰면 아무것도 안되더라구요(이유는 잘 모르겠음 ㅜ)

도움이 되셨을지 모르겠습니다, 저도 초보라 ㅠㅠ

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

4년 전

</p>

<p>             success : function(res) {

                if(res) {                                        

                    $(result_span).text(res.aaa);

                    $('#result_div' + value).html(res.ccc);

                }

            }</p>

<p>

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

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

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

로그인