带回调函数的xmlhttpRequest

时间:2013-07-15 23:15:20

标签: php javascript ajax xmlhttprequest

我想返回ajax调用的responsetext。我没有成功,我得到的时间不确定:

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;
}

我正在调用翻译功能给我一个单词的翻译。有谁知道,我做错了什么?

1 个答案:

答案 0 :(得分:0)

由于重复,我投票决定关闭此项。这个答案仅仅是为了使重复问题中找到的答案与这个具体问题更相关。

请阅读此内容以获取更多信息:Undefined return value from the function call Javascritpt


您需要向translate()函数添加回调:

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

如果您希望像这样致电translate

var newtext = translate(text);
displayText(newtext);
doSomethingElseWith(newtext);

然后我很抱歉,但是使用异步代码是不可能的。您需要将调用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);
});