-1

我想返回 ajax 调用的响应文本。我没有成功,我整个时间都不确定:

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

我正在调用 translate 函数来给我一个特定的单词翻译。有谁知道,我做错了什么?

4

1 回答 1

0

由于重复,我已投票关闭它。这个答案只是为了使在重复问题中找到的答案与这个特定问题更相关。

请阅读此内容以获取更多信息:函数调用 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);
});
于 2013-07-16T02:12:16.373 回答