JQuery Post가있는 JavaScript 함수는 항상 정의되지 않은 반환됩니다
-
05-07-2019 - |
문제
나는 여기서 무슨 일이 일어나고 있는지 전혀 모르고 누군가가 도울 수 있기를 바라고 있었는데, 내가 실종 된 것이 쉬운 일이라고 확신합니다.
JavaScript에 jQuery 게시물이있는 기능이 있습니다. 나는 단지 텍스트 인 게시물의 결과를 반환하고 변수에 넣고 싶습니다. 숫자는 게시물에서 올바르게 돌아 오지만 변수에 넣으면 변수는 "정의되지 않은"이라고합니다. 어떤 아이디어?
var total = GetTotalSize();
alert(total);
function GetTotalSize(){
var i = "";
$.post("Handlers/GetTotal.ashx", {id : $("#hID").val()}, function(data){
i = data.toString();
return i;
});
}
해결책
당신은 그렇게 할 수 없습니다. Ajax의 "A"는 "비동기"를 의미합니다. 당신이 제공하는 콜백 기능 $.post()
이후에 잘 실행됩니다 GetTotalSize()
실행 및 반환.
이를 수용하기 위해 코드를 재구성해야합니다. 나머지 코드가 어떻게 보이는지 모르기 때문에 추천서는 구체적 일 수는 없지만 여기에 가능성이 있습니다.
$.post("Handlers/GetTotal.ashx", {id : $("#hID").val()}, function(data)
{
doSomethingWithTotalSize( data.toString() );
});
function doSomethingWithTotalSize( totalSize )
{
// whatever
}
다른 팁
Peter는 절대적으로 옳지 만 $ .ajax 방법이 통과하여 동기식으로 작동하도록 강요 할 수 있습니다. async: false
.
문제는 당신이 돌아오고 있다는 것입니다 i
콜백 함수 외부. 기본적으로 돌아올 때 i
, 내용은 아직 존재하지 않으며 서버가 데이터를 콜백 함수로 반환 할 때까지 존재하지 않습니다.
이 시도
function GetTotalSize(callback) {
$.post("Handlers/GetTotal.ashx", {id : $("#hID").val()}, function(outputData) {
callback(outputData);
});
}
function DoSomething(data)
{
//....
}
GetTotalSize(DoSomething);
나는 이것이 오래된 게시물이라는 것을 알고 있지만, 나를위한 솔루션은 사용하는 것이 었습니다. complete:[delegate]
보다는 success
. 이것은 callback
완료되었습니다.
제휴하지 않습니다 StackOverflow