2011-03-03 7 views
0

이 항목이 정말 쉽다는 것을 확신합니다.하지만 이런 일에 매달릴 때 나는 멍청한 짓입니다 ... 2 시간이 넘었습니다. (jQuery는 POST 호출로 정의되지 않은 값을 반환합니다.

은 왜 내가 불을 지르고의 응답에서 그것을보고 있어요으로

function userExists(user) { 
$.post("misc/user_exists.php", {user: user}, 
     function(result) { 
      return '' + result + ''; 
     }); 
}); 

PHP 파일이 완벽하게 정상적으로 사용자 이름을 반환? 정의되지 않은 반환합니다.하지만 경고를 수행 할 때이 함수는 쓸모가 그것을 호출 한 후 문자열, 부울 등을 반환하는지 여부는 항상 정의되지 않습니다.

고마워요!

+0

처럼 할 수있다 '는 정의되지 않은 result'인가 : 당신이 호출이 비동기 아닌지 확인 할 수

function userExists(user, callback) //because this can be async, you need a callback... { $.post("misc/user_exists.php", {user: user}, function(result) { if(callback) callback(result) return '' + result + ''; }); }; userExists('someUser', function(result) { alert('' + result + '') }); 

또는이 시도? 아니면'userExists (user)'의 반환 값이 정의되지 않았습니까? –

+0

시도해주세요. console.log (result); 방화범은 뭐래? –

+0

userExists (user)의 결과입니다. result는 사용자 이름이있을 때 그 이름입니다. – luqita

답변

6

$.post 요청이 비동기, 그래서 당신은 return '' + result + '';을 실행할 때 실제로 어디서든 데이터를 반환 아니에요. 대신, AJAX 성공 함수 내부에서 다른 이벤트를 트리거하십시오.

0

문제는 반환은 post 메서드의 ajax.sucess 콜백에만 영향을 미친다는 것입니다.

function userExists(user) //because this can be async, you need a callback... 
{ 
    var res; 
    $.post("misc/user_exists.php", {user: user}, 
    function(result) 
    { 
     res = result; 
    }); 
    return res; 
}; 
$.ajax({async:false}); 
alert('' + userExists('someUser'+ '');  
-2

당신이

function userExists(user) { 
    var username = ''; 
$.post("misc/user_exists.php", {user: user}, 
     function(result) { 

      username = result ; 
     }); 
    return username; 
}); 
+0

대신 경고가 표시되고 사용자가 ''을 (를) 반환합니다. 호출이 비동기입니다. – epascarello

관련 문제