2012-03-13 3 views
1

jQuery.post 클래스를 사용하여 함수 내의 응답을 리턴 (alert가 아닌)하고 싶다.jQuery Ajax Post 리턴하기

function test_func() { 
    $.post("test.php", { cmd: "testing" }, function (data) { alert(data); }) 
} 

(적절한 값으로 표시 경고)

나는 다음과 같은 시도 :

function test_func() { 
    return $.post("test.php", { cmd: "testing" }, function (data) { return data; }) 
} 

(반환

다음은 적절한 값으로 경고를 제공합니다 객체)

,
function test_func() { 
    var tmp; 
    $.post("test.php", { cmd: "testing" }, function (data) { tmp=data; }) 
    return tmp; 
} 

그래서 거래는 무엇

function test_func() { 
    t=$.post("test.php", { cmd: "testing" }) 
    return t.responseText; 
} 

(정의되지 않은 반환)

var tmp; 

function setTmp(n) { 
    tmp=n; 
} 

function test_func() { 
    t=$.post("test.php", { cmd: "testing" }, function (data) { setTmp(data); }) 
} 

(정의되지 않은 반환) (정의되지 않은 반환)? "test_func()"가 데이터 응답 텍스트를 반환하도록하려면 어떻게해야합니까?

답변

0

거래는 아약스가 하나 개의 가능한 솔루션은 다른 더 나은가 현재 설정 작업을하는 것입니다

$.ajaxSetup({ 
async:false 
}); 

다음

function test_func() { 
var temp; 
    t=$.post("test.php", { cmd: "testing" }) 
    return t.responseText; 
} 

대답처럼 동기로 설정하는 것입니다 비동기입니다 그것을 다루는 방법

+0

굉장, 도와 줘서 고마워. 이것은 계몽적입니다. 구현되었으며 현재 작동합니다. – Gaias

1

비동기 요청으로 인해 함수를 호출하자마자 응답을받을 수 없습니다. 대신 $.post으로 전달하는 function은 응답이 완료되는대로 조치를 수행하는 콜백을위한 것입니다. 다음 고려 :

function myCallback(response) { 
    // do something with `response`... 
} 

function test_func() { 
    $.post("test.php", { cmd: "testing" }, myCallback) 
} 

대신에 직접 응답을 반환하는 myCallback 기능에 필요에 따라, 당신은 대신을 조작 할 수 있습니다.