2013-07-15 2 views
-1

ajax 호출의 responsetext를 반환하고 싶습니다. 나는 성공하지 못하고 전체 시간을 정의하지 않는다.xmlhttp 콜백 함수가있는 요청

function ajaxFunction(callback,tekstvar){ 
    xmlhttp= new GetXmlHttpObject(); 
    if (xmlhttp==null) 
    { 
      alert ("Browser does not support HTTP Request"); 
      return; 
    } 
    var url="php/functions_translate.php"; 
    url=url+"?tekst="+tekstvar; 

    xmlhttp.onreadystatechange=function() 
    { 
     if (xmlhttp.readyState==4 && xmlhttp.status==200){ 
      return callback(xmlhttp.responseText) 
     }; 
    }; 

    xmlhttp.open("GET",url,true); 
    xmlhttp.send(); 
} 

function translate(tekstvar) { 
    var text = ajaxFunction(function(tekst){return tekst;},tekstvar); 
    return text; 
} 

번역 기능을 사용하여 특정 단어 번역을 제공한다. 아무도 내가 뭘 잘못하고 있는지 알아?

+0

이 점점 정확한 오류가 무엇입니까? 'console.log()'를 사용하여 디버깅하고 있습니까? – samayo

+0

'callback'이 함수가되어야합니다. –

+0

비동기 호출은 물건을 반환 할 수 없습니다! – epascarello

답변

0

본인은 중복으로 인해 마감하도록 투표했습니다. 이 대답은 단순히이 특정 질문과 관련이있는 중복 질문에있는 대답을 만들기위한 것입니다.

대한 추가 정보를 원하시면이 읽어 보시기 바랍니다 :

var newtext = translate(text); 
displayText(newtext); 
doSomethingElseWith(newtext); 
:이 같은 translate를 호출 할 것으로 예상되는 경우

function translate(tekstvar,callback) { 
    ajaxFunction(callback,tekstvar); 
} 

: Undefined return value from the function call Javascritpt


당신은 translate() 함수에 콜백을 추가 할 필요가

죄송하지만 불가능합니다. 비동기 코드로 translate 함수를 호출 한 후에 작성한 모든 코드를 translate 함수에 전달하는 콜백 안에 넣어야합니다. 즉

, 다음과 같이 수정 :

var newtext = translate(text); 
// 
//--------------------------------------- move everything below this line 
//          into the callback 
displayText(newtext); 
doSomethingElseWith(newtext); 

를 그래서 다음과 같습니다 것을 :

translate(text,function(newtext){ 
    displayText(newtext); 
    doSomethingElseWith(newtext); 
}); 
관련 문제