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

$.post 안에서 리턴을 못하나요? 채택완료

세진컴퓨터랜드 2년 전 조회 2,441

완성형은 아니지만 

작성하다 보니 아래처럼 코드가 되었습니다.

</p>

<p><?php

include_once ('./_common.php');

include_once (G5_PATH.'/head.php');</p>

<p>?>

<script type="text/javascript"></p>

<p>$(document).ready(function(){

    $(document).on("click", "button", function(){

        var temp = foo(99);

        console.log("함수 리턴값", temp);

    });

});</p>

<p>function foo(idx){

    $.post("./ajax.php", {idx:idx}, function(data){

        console.log("ajax안의 값", data.idx);

        return data.idx;

    }, "json");

}

</script>

<button type="button">버튼</button></p>

<p>

<?php

include_once (G5_PATH.'/tail.php') ;</p>

<p>

 

함수안에 $.post안의 data.idx 값을 foo함수 리턴값으로

리턴을 하려면 어떻게 해야 하나요?

 

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

답변 4개

채택된 답변
+20 포인트
세크티
2년 전

이렇게 해보세요

</p>

<pre>
<code>function foo(idx){
    var data_idx;
</code>    $.ajaxSetup({ async: false });<code>
    $.post("./ajax.php", {idx:idx}, function(data){
        console.log("ajax안의 값", data.idx);
        data_idx = data.idx;
    }, "json");
    return data_idx;
}</code></pre>

<p>

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

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

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

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

2년 전

var temp = foo(99);<--- foo를 호출하고 바로 다음행으로 진행 되어버리기 때문에

다음행에서 return값을 못받은 상태로 출력하게 됩니다

굳이 이렇게 할 필요가 있나요?

 $(document).on("click", "button", function(){

     idx = 99;       $.post("./ajax.php", {idx:idx}, function(data){        var temp = data.idx;         console.log(" 리턴값", temp);     }, "json");         });

 

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

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

2년 전

<script type="text/javascript">

$(document).ready(function(){

    $(document).on("click", "button", async function(){

        var temp = await foo(99);

        console.log("함수 리턴값", temp);

    });

});

async function foo(idx){

    return $.post("./ajax.php", {idx:idx}, function(data){

        console.log("ajax안의 값", data.idx);

        return data.idx;

    }, "json");

}

</script>

<button type="button">버튼</button></p>

<p>

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

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

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

로그인